一杂伟、lambda表達(dá)式
lambda表達(dá)式祭芦,又稱匿名函數(shù)筷笨,是現(xiàn)代各種編程語(yǔ)言爭(zhēng)相引入的一種語(yǔ)法,其功能堪比函數(shù)龟劲,設(shè)計(jì)卻比函數(shù)簡(jiǎn)潔胃夏。
如果一個(gè)函數(shù)有一個(gè)返回值,并且只有一句代碼昌跌,可以使用 lambda簡(jiǎn)化仰禀。
二、lambda語(yǔ)法
lambda 參數(shù)列表 : 表達(dá)式
注意:
- lambda表達(dá)式的參數(shù)可有可無(wú)蚕愤,函數(shù)的參數(shù)在lambda表達(dá)式中完全適用答恶。
- lambda表達(dá)式能接收任何數(shù)量的參數(shù)但只能返回一個(gè)表達(dá)式的值饺蚊。
三、lambda體驗(yàn)
# 函數(shù)
def fn1():
return 200
print(fn1)
print(fn1())
# lambda表達(dá)式
fn2 = lambda: 100
print(fn2)
print(fn2())
注意:直接打印lambda表達(dá)式悬嗓,輸出的是此lambda的內(nèi)存地址污呼。
示例:計(jì)算a + b
- 函數(shù)實(shí)現(xiàn):
def add(a, b):
return a + b
result = add(1, 2)
print(result)
通過(guò)上面這個(gè)案例可以看出:需求簡(jiǎn)單,代碼偏多烫扼。
- lambda實(shí)現(xiàn):
fn1 = lambda a, b: a + b
print(fn1(1, 2))
四曙求、lambda的參數(shù)形式
1. 無(wú)參數(shù)
fn1 = lambda: 100
print(fn1())
2. 一個(gè)參數(shù)
fn1 = lambda a: a
print(fn1('hello world'))
3. 默認(rèn)參數(shù)
fn1 = lambda a, b, c=100: a + b + c
print(fn1(10, 20))
4. 可變參數(shù):*args
fn1 = lambda *args: args
print(fn1(10, 20, 30))
注意:這里的可變參數(shù)傳入到lambda之后,返回值為元組映企。
5. 可變參數(shù):**kwargs
fn1 = lambda **kwargs: kwargs
print(fn1(name='python', age=20))
五悟狱、lambda的應(yīng)用
1. 帶判斷的lambda
fn1 = lambda a, b: a if a > b else b
print(fn1(1000, 500))
2. 列表數(shù)據(jù)按字典key的值排序
students = [
{'name': 'TOM', 'age': 20},
{'name': 'ROSE', 'age': 19},
{'name': 'Jack', 'age': 22}
]
# 按name值升序排列
students.sort(key=lambda x: x['name'])
print(students)
# 按name值降序排列
students.sort(key=lambda x: x['name'], reverse=True)
print(students)
# 按age值升序排列
students.sort(key=lambda x: x['age'])
print(students)
六、lambda的特征
- 簡(jiǎn)潔性堰氓,符合了Python的一貫宗旨挤渐。
- 起到了函數(shù)的作用,但未顯示函數(shù)名稱双絮,這就是匿名函數(shù)浴麻。
- 有形參。
- 有返回值的囤攀。