lambda引數寫法問題

2022-02-08 23:13:32 字數 2188 閱讀 8083

今天看到一段程式中有用到lambda函式,其實很簡單 key=lambda (l,s):s

猜我犯了個什麼錯誤?

自己把(l,s)理解成lambda的2個形參了,是蠻容易這樣理解的哈,畢竟以前函式都是  def f(1,s):這樣的

然後自己呼叫時老提示錯誤,引數錯誤,於是就看了下官方文件才知道lmbda引數其實是這樣的

lambda x,y:x+y

x,y是它的2個形參,所以這裡 lambda (l,s)其實就只有乙個引數,那就是乙個tuple型別的引數,

所以呼叫時就是key((x,y))

這個錯誤是很容易犯啊;)

>>> key=lambda(1,s):s

syntaxerror: invalid syntax

>>> key=lambda(l,s)

syntaxerror: invalid syntax

>>> key=lambda(l,s):s

>>> key

at 0x02a81cf0>

>>> key(1,2)

traceback (most recent call last):

file "", line 1, in key(1,2)

typeerror: () takes exactly 1 argument (2 given)

>>> key(1)

traceback (most recent call last):

file "", line 1, in key(1)

file "", line 1, in key=lambda(l,s):s

typeerror: 'int' object is not iterable

>>> key([1,2,3,4,5])

traceback (most recent call last):

file "", line 1, in key([1,2,3,4,5])

file "", line 1, in key=lambda(l,s):s

valueerror: too many values to unpack

>>> key([1])

traceback (most recent call last):

file "", line 1, in key([1])

file "", line 1, in key=lambda(l,s):s

valueerror: need more than 1 value to unpack

>>> key()

traceback (most recent call last):

file "", line 1, in key()

file "", line 1, in key=lambda(l,s):s

valueerror: need more than 0 values to unpack

>>> key(,1)

traceback (most recent call last):

file "", line 1, in key(,1)

typeerror: () takes exactly 1 argument (2 given)

>>> x=lambda(x,y):x+y

>>> x(1,2)

traceback (most recent call last):

file "", line 1, in x(1,2)

typeerror: () takes exactly 1 argument (2 given)

>>> x(1)

traceback (most recent call last):

file "", line 1, in x(1)

file "", line 1, in x=lambda(x,y):x+y

typeerror: 'int' object is not iterable

>>> x=lambda(x):x+1

>>> x(111)

112>>> key=lambda x,y:x+y

>>> key(1,2)

3>>> key=lambda (1,s):s

syntaxerror: invalid syntax

>>> key=lambda (l,s):s

>>> key((1,2))

2

lambda函式表示式寫法

c 11提供了對匿名函式的支援,稱為lambda函式 也叫lambda表示式 lambda表示式具體形式如下 capture parameters return type 如果沒有引數,空的圓括號 可以省略.返回值也可以省略,如果函式體只由一條return語句組成或返回型別為void的話.形如 ca...

有引數返回的Lambda

主要看 的注釋 1 public static void main string args 19 20 匿名內部類設定排序 21 乙個是傳入的需要排序的物件 22 乙個是重寫comparator 的 public int compare person o1,person o2 23 修改return...

Java程式設計 可變引數寫法

當你在做專案時,有乙個計算傳入引數的和,但引數多少不確定,面對這樣的情況要如何解決呢?可變引數的寫法請參考下面的例子 package com.ycao.argstest public class varargs 另外一種傳參方式,說明這種傳參方法本質就是陣列 型別後面加三個點即 說明這個方法的引數不...