當(dāng)我們在傳入函數(shù)時,有些時候,不需要顯式地定義函數(shù),直接傳入匿名函數(shù)更方便。
創(chuàng)新互聯(lián)自2013年起,先為洪雅等服務(wù)建站,洪雅等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為洪雅企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
在Python中,對匿名函數(shù)提供了有限支持。還是以map()函數(shù)為例,計算f(x)=x2時,除了定義一個f(x)的函數(shù)外,還可以直接傳入匿名函數(shù):
map(lambda?x:?x?*?x,?[1,?2,?3,?4,?5,?6,?7,?8,?9])
[1,?4,?9,?16,?25,?36,?49,?64,?81]
通過對比可以看出,匿名函數(shù)lambda x: x * x實際上就是:
def?f(x):
return?x?*?x
關(guān)鍵字lambda表示匿名函數(shù),冒號前面的x表示函數(shù)參數(shù)。
匿名函數(shù)有個限制,就是只能有一個表達式,不用寫return,返回值就是該表達式的結(jié)果。
用匿名函數(shù)有個好處,因為函數(shù)沒有名字,不必擔(dān)心函數(shù)名沖突。此外,匿名函數(shù)也是一個函數(shù)對象,也可以把匿名函數(shù)賦值給一個變量,再利用變量來調(diào)用該函數(shù):
f?=?lambda?x:?x?*?x
f
function?lambda?at?0x10453d7d0
f(5)
25
同樣,也可以把匿名函數(shù)作為返回值返回,比如:
def?build(x,?y):
return?lambda:?x?*?x?+?y?*?y
小結(jié)
Python對匿名函數(shù)的支持有限,只有一些簡單的情況下可以使用匿名函數(shù)。
希望能幫到你!
匿名函數(shù):使用lambda創(chuàng)建的函數(shù),所謂匿名,意即不再使用def語句這樣標準的形式定義一個函數(shù)。
好處:
1、使用Python寫一些執(zhí)行腳本時,使用lambda可以省去定義函數(shù)的過程,讓代碼更加精簡。
2、對于一些抽象的,不會別的地方再復(fù)用的函數(shù),有時候給函數(shù)起個名字也是個難題,使用lambda不需要考慮命名的問題。
3、使用lambda在某些時候讓代碼更容易理解。了解更多python匿名函數(shù)相關(guān)知識,可以來老男孩教育。
應(yīng)用場景:經(jīng)常與一些內(nèi)置函數(shù)相結(jié)合使用,比如說map()、filter()、sorted()、reduce()等。
表達式格式:lambda 參數(shù)列表:lambda體
思路:1、定義一個字典,把名字和數(shù)字對應(yīng)起來;2、引用隨機模塊;3、輸入要點名的個數(shù),通過循環(huán)輸出名字。
具體代碼如下:
#?-*-?coding:utf-8?-*-
from?random?import?randint
DictName?=?{1:?'Aaron',
2:?'Abel',
3:?'Abraham',
4:?'Adam',
5:?'Adrian',
6:?'Alva',
7:?'Alex',
8:?'Alexander',
9:?'Alan',
10:?'Albert',
11:?'Alfred',
12:?'Andrew',
13:?'Andy',
14:?'Angus',
15:?'Anthony',
16:?'Arthur',
17:?'Austin',
18:?'Ben',
19:?'Benson',
20:?'Bill',
21:?'Bob',
22:?'Brandon',
23:?'Brant',
24:?'Brent',
25:?'Brian',
26:?'Bruce',
27:?'Carl',
28:?'Cary',
29:?'Caspar',
30:?'Charles',
31:?'Cheney',
32:?'Chris',
33:?'Christian',
34:?'Christopher',
35:?'Colin',
36:?'Cosmo',
37:?'Daniel',
38:?'Dennis',
39:?'Derek',
40:?'Donald',
41:?'Douglas',
42:?'David',
43:?'Denny',
44:?'Edgar',
45:?'Edward',
46:?'Edwin',
47:?'Elliott',
48:?'Elvis',
49:?'Eric',
50:?'Evan',
51:?'Francis',
52:?'Frank',
53:?'Franklin',
54:?'Fred',
55:?'Gabriel',
56:?'Gaby',
57:?'Garfield',
58:?'Gary'}
Num?=?raw_input('請輸入需要點名個數(shù):')
flag?=?True
while?flag:
if?Num.isdigit():
Ind?=?int(Num)
flag?=?False
else:
print?'輸入錯誤,請確認'
else:
for?i?in?range(Ind):
print?DictName[randint(1,58)]
運行結(jié)果:
請輸入需要點名個數(shù):4
Brant
Cheney
David
Alan
1、函數(shù)定義
①使用def關(guān)鍵字定義函數(shù)
②
def 函數(shù)名(參數(shù)1.參數(shù)2.參數(shù)3...):
"""文檔字符串,docstring,用來說明函數(shù)的作用"""
#函數(shù)體
return 表達式
注釋的作用:說明函數(shù)是做什么的,函數(shù)有什么功能。
③遇到冒號要縮進,冒號后面所有的縮進的代碼塊構(gòu)成了函數(shù)體,描述了函數(shù)是做什么的,即函數(shù)的功能是什么。Python函數(shù)的本質(zhì)與數(shù)學(xué)中的函數(shù)的本質(zhì)是一致的。
2、函數(shù)調(diào)用
①函數(shù)必須先定義,才能調(diào)用,否則會報錯。
②無參數(shù)時函數(shù)的調(diào)用:函數(shù)名(),有參數(shù)時函數(shù)的調(diào)用:函數(shù)名(參數(shù)1.參數(shù)2.……)
③不要在定義函數(shù)的時候在函數(shù)體里面調(diào)用本身,否則會出不來,陷入循環(huán)調(diào)用。
④函數(shù)需要調(diào)用函數(shù)體才會被執(zhí)行,單純的只是定義函數(shù)是不會被執(zhí)行的。
⑤Debug工具中Step into進入到調(diào)用的函數(shù)里,Step Into My Code進入到調(diào)用的模塊里函數(shù)。