Python-匿名函数
Posted JerryZao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python-匿名函数相关的知识,希望对你有一定的参考价值。
1、匿名函数
匿名:没有名字
匿名函数:即没有名字的函数
Python 借助 lambda 表达式构建匿名函数
格式:
lambda 参数列表:表达式
1 lambda x: x ** 2 2 3 (lambda x: x**2)(4) #加括号调用,注意前面的函数也要加括号!! 4 5 foo = lambda x, y :(x+y) ** 2 # 不推荐这么用 6 foo(1,2) 7 8 def foo(x,y): 9 return (x+y)**2 10 foo(2,1)
匿名函数:
- 使用 lambda 关键字 来定义匿名函数
- 参数列表不需要小括号
- 冒号是用来分割参数列表和表达式
- 不需要使用return ,表达式的值,就是匿名函数返回值
- lambda 表达式(匿名函数)只能写在一行上,被称为单行函数
- 表达式不能出现 = ,+= 。。。。
- 用途:
- 在高阶函数传参时,使用lambda表达式,简化代码。
1 print((lambda : 0)()) # 0 2 print((lambda x, y=30: x + y)(5, 6)) # 11 3 print((lambda x, *, y=10: x + y)(5, y=10)) # 15 4 print((lambda x, *, y=19: x + y)(5)) # 24 5 print((lambda *args:(x for x in args))(*range(5))) # 函数返回一个生成器 ,(x for x in args)生成器表达式 6 print((lambda *args:[x for x in args])(*range(5))) # 函数返回一个列表 7 8 print([x for x in (lambda *args:map(lambda x:x+1,args))(*range(5))]) # [1, 2, 3, 4, 5] 高阶函数 9 print([x for x in (lambda *args:map(lambda x:(x+1,args), args))(*range(5))]) # [(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))]
- 在高阶函数传参时,使用lambda表达式,简化代码。
以上是关于Python-匿名函数的主要内容,如果未能解决你的问题,请参考以下文章