『無為則無心』Python函數 — 34、lambda表達式
- 2022 年 1 月 7 日
- 筆記
- 高級測試必會技能 - Python基礎
lambda表達式的主要作用就是化簡程式碼。
匿名函數一般都是作為參數使用,其他地方一般不會使用。
1、lambda的應用場景
如果一個函數有一個返回值,並且只有一句程式碼,可以使用lambda簡化。
2、lambda語法
lambda 參數列表 : 表達式
注意:
lambda表達式的參數可有可無,函數的參數在lambda表達式中完全適用。lambda表達式能接收任何數量的參數但只能返回一個表達式的值。
3、快速入門
# 函數
def fn1():
return 200
print(fn1) # <function fn1 at 0x0000000002665948>
print(fn1()) # 200
# lambda表達式
# lambda 參數列表: 表達式
fn2 = lambda: 100
print(fn2) # <function <lambda> at 0x00000000026658B8>
print(fn2()) # 100
注意:直接列印
lambda表達式,輸出的是此lambda的記憶體地址。
圖示如下:

4、示例:計算a + b
(1)函數實現
def add(a, b):
return a + b
result = add(1, 2)
print(result) # 3
思考:需求簡單,是否程式碼多?
(2)lambda實現
fn1 = lambda a, b: a + b
print(fn1(1, 2)) # 3
5、lambda的參數形式
(1)無參數
fn1 = lambda: 100
print(fn1()) # 100
(2)一個參數
fn1 = lambda a: a
print(fn1('hello world')) # hello world
(3)默認參數
fn1 = lambda a, b, c=100: a + b + c
print(fn1(10, 20)) # 130
print(fn1(10, 20, 200)) # 230
(4)可變參數:*args
fn1 = lambda *args: args
print(fn1(10, 20, 30)) # (10, 20, 30)
print(fn1(10)) # (10,)
注意:這裡的可變參數傳入到
lambda之後,返回值為元組。
(5)可變參數:**kwargs
fn1 = lambda **kwargs: kwargs
print(fn1(name='Python')) # {'name': 'Python'}
print(fn1(name='python', age=20)) # {'name': 'python', 'age': 20}
注意:這裡的可變參數傳入到
lambda之後,返回值為字典。
6、lambda的應用
(1)帶判斷的lambda
# 需求:比較兩個數大小,誰大返回誰
fn1 = lambda a, b: a if a > b else b
print(fn1(1000, 500))
(2)列表數據按字典key的值排序
students = [
{'name': 'TOM', 'age': 20},
{'name': 'ROSE', 'age': 19},
{'name': 'Jack', 'age': 22}
]
# 按name值升序排列(x表示升降序的元素,這裡是字典變數)
students.sort(key=lambda x: x['name'])
print(students)
# 按name值降序排列(reverse=True 降序)
students.sort(key=lambda x: x['name'], reverse=True)
print(students)
# 按age值升序排列
students.sort(key=lambda x: x['age'])
print(students)

