Python入門篇-匿名函數

              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))]
相關文章
相關標籤/搜索