匿名函數,顧名思義即沒有名稱的函數,和def定義的函數的最大區別在於匿名函數建立後返回函數自己(即匿名函數不須要return來返回值),表達式自己結果就是返回值,而def建立後則賦值給一個變量名,在Python中,咱們利用關鍵詞lambda
建立匿名函數,如下是匿名函數lambda
表達式的形式: lambda arg1,arg2,.....argn:expression
如下爲一些lambda的特色:python
# 能夠將lambda直接傳遞給一個變量,像調用通常函數同樣使用
B = lambda :True
print(B())
# 等價於
def BF():
return True
print(BF())
複製代碼
示例結果:express
True
True
複製代碼
支持多個參數bash
two_sum = lambda x, y: x + y
# 等同於:
def two_sum(x, y): return x + y
print(two_sum(1,2))
複製代碼
示例結果:閉包
3
複製代碼
sum_with_100 = lambda x, y=100: x + y
# 等同於:
def sum_with_100(x, y=100): return x + y
print(sum_with_100(200))
複製代碼
示例結果:函數
300
複製代碼
以前的示例咱們將lambda匿名函數賦值一個變量,經過相似def定義的函數的方式傳參,咱們能夠在lambda後面直接傳遞參數:ui
two_sum = (lambda x, y: x + y)(3, 4)
print(two_sum)
複製代碼
示例結果:spa
7
複製代碼
將lambda嵌套到普通函數中,lambda函數自己作爲return的值,構建簡單的閉包
code
def sum(x):
return lambda y: x + y
sum_with_100 = sum(100)
result = sum_with_100(200)
print(result)
複製代碼
示例結果:排序
300
複製代碼
lower = lambda x,y: x if x<y else y
print(lower(7,100))
複製代碼
實例結果:string
7
複製代碼
d = [{"order":3},{"order":1},{"order":2}]
# 根據order鍵值排序
d.sort(key=lambda x:x['order'])
print(d)
複製代碼
實例結果
[{'order': 1}, {'order': 2}, {'order': 3}]
複製代碼