Python入門篇-匿名函數
python
做者:尹正傑函數
版權聲明:原創做品,謝絕轉載!不然將追究法律責任。spa
一.匿名函數概述code
1>.什麼是匿名函數orm
匿名,即沒有名字
匿名函數,即沒有名字的函數
2>.匿名函數編寫格式blog
Python藉助Lambda表達式構建匿名函數
匿名函數格式以下: lambda 參數列表:表達式
3>.匿名函數注意事項utf-8
(1)使用lambda關鍵字來定義匿名函數
(2)參數列表不須要小括號
(3)冒號是用來分割參數列表和表達式的
(4)不須要使用return,表達式的值,就是匿名函數返回值
(5)lambda表達式(匿名函數)只能寫在一行上,被稱爲單行函數
(6)匿名函數用途:在高階函數傳參時,使用lambda表達式,每每能簡化代碼
二.匿名函數定義generator
1>.匿名函數的定義和調用入門
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 7 8 l1 = lambda x : x ** 2 #使用lambda關鍵字定義匿名函數,咱們能夠給它複製給一個變量 9 10 res = l1(5) #調用匿名函數 11 12 print(res) 13 14 print((lambda x:x **2)(5)) #固然,上面3行代碼咱們能夠寫成一行喲~ 15 16 17 18 #以上代碼執行結果以下: 19 25 20 25
2>.不推薦使用的匿名函數案例form
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 7 foo = lambda x,y :(x + y) ** 2 #定義一個匿名函數,咱們給它複製給一個變量,其實咱們並不推薦這樣使用 8 9 print("foo:{}".format(foo(10,20))) #調用咱們定義的匿名函數 10 11 12 def bar(x,y): #咱們不推薦使用上面的方法,而是建議使用普通函數定義比價複雜的功能 13 return (x + y) ** 2 14 15 print("bar:{}".format(bar(10,20))) 16 17 18 #以上代碼執行結果以下: 19 foo:900 20 bar:900
3>.一些簡單的匿名函數案例
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 7 print((lambda :0)()) 8 9 print((lambda x, y=3: x + y)(5)) 10 11 print((lambda x, y=3: x + y)(5, 6)) 12 13 print((lambda x, *, y=30: x + y)(5)) 14 15 print((lambda x, *, y=30: x + y)(5, y=10)) 16 17 print((lambda *args: (x for x in args))(*range(5))) 18 19 print((lambda *args: [x+1 for x in args])(*range(5))) 20 21 print((lambda *args: {x+2 for x in args})(*range(5))) 22 23 print([x for x in (lambda *args: map(lambda x: x+1, args))(*range(5))]) 24 25 print([x for x in (lambda *args: map(lambda x: (x+1,args), args))(*range(5))]) 26 27 28 29 #以上代碼執行結果以下: 30 0 31 8 32 11 33 35 34 15 35 <generator object <lambda>.<locals>.<genexpr> at 0x000000000221D5C8> 36 [1, 2, 3, 4, 5] 37 {2, 3, 4, 5, 6} 38 [1, 2, 3, 4, 5] 39 [(1, (0, 1, 2, 3, 4)), (2, (0, 1, 2, 3, 4)), (3, (0, 1, 2, 3, 4)), (4, (0, 1, 2, 3, 4)), (5, (0, 1, 2, 3, 4))]