匿名函數(shù)
python 使用 lambda 來(lái)創(chuàng)建匿名函數(shù)。
所謂匿名,意即不再使用 def 語(yǔ)句這樣標(biāo)準(zhǔn)的形式定義一個(gè)函數(shù)。
lambda 只是一個(gè)表達(dá)式,函數(shù)體比 def 簡(jiǎn)單很多。
lambda的主體是一個(gè)表達(dá)式,而不是一個(gè)代碼塊。僅僅能在lambda表達(dá)式中封裝有限的邏輯進(jìn)去。
lambda 函數(shù)擁有自己的命名空間,且不能訪問(wèn)自己參數(shù)列表之外或全局命名空間里的參數(shù)。
雖然lambda函數(shù)看起來(lái)只能寫一行,卻不等同于C或C++的內(nèi)聯(lián)函數(shù),后者的目的是調(diào)用小函數(shù)時(shí)不占用棧內(nèi)存從而增加運(yùn)行效率。
#!/usr/bin/python
# -*- coding: utf-8 -*-
sum=lambda arg1,arg2:arg1+arg2
print(sum(11,22))#33
------------------------------------------------------
#排名成績(jī)
#!/usr/bin/python
#Filename:support.py
from operator import itemgetter
students = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
print(sorted(students, key=lambda t: t[1]))
------------------------------------------------------
list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
[1, 4, 9, 16, 25, 36, 49, 64, 81]
------------------------------------------------------
匿名函數(shù)有個(gè)好處,因?yàn)楹瘮?shù)沒(méi)有名字,不必?fù)?dān)心函數(shù)名沖突。此外,匿名函數(shù)也是一個(gè)函數(shù)對(duì)象,也可以把匿名函數(shù)賦值給一個(gè)變量,再利用變量來(lái)調(diào)用該函數(shù):
f = lambda x: x * x
>>> f
<function <lambda> at 0x101c6ef28>
>>> f(5)
25
同樣,也可以把匿名函數(shù)作為返回值返回,比如:
def build(x, y):
return lambda: x * x + y * y
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
分享知識(shí),分享快樂(lè)!希望中國(guó)站在編程之巔!
----融水公子
公眾微信號(hào):rsgz520
360圖書館館號(hào):rsgz002.360doc.com