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))]