携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情
0 环境
- 编辑器:idea或vscode
- 系统版本:windows10
- python版本:3.9.6
1 概念
为啥要用到匿名函数(用完就丢那种),普通函数(长期使用)它不够用吗?打个场景,比如一个简单的逻辑(值加一),用普通函数需要写好几行,定义它,加1,值返回,但是匿名函数一行就够。
2 定义
普通函数的定义:
def add(x):
x = x + 1
return x
而匿名函数(没有名字的函数,我更喜欢记作孤儿函数),它的定义方式,需要用到lambda关键字,比如上面的普通函数的定义,变成匿名函数,就是lambda x : x + 1,如下图,它也是function的类型。
需要注意的点:lambda x : x + 1这里的冒号后面是不可以换行的,你可以试试。
想想看我们调用普通函数:add(2),那么匿名函数的调用也是类似的,它是function的类型,也可以(lambda x : x + 1)(2)
def demo1():
anonymous = lambda x: x + 1
print(anonymous)
print(anonymous(2))
if __name__ == '__main__':
demo1()
不管普通函数还是匿名函数,它都是函数。
3 匿名函数的特点
匿名函数有如下面的几个特点:1、用lambda关键字来定义,2、参数的列表无需使用括号起来,3、参数后面的冒号不可以换行,对它来说,可能你换行了,就认为你是在写新的一行语句,4、lambda中是没有return返回的语句的,最后的表达式就代表返回值(如上面的代码,
lambda x: x + 1,这里的x+1就是它的返回值)。我也简单的写了一下,用了括号把lambda表达式括起来,然后后面又来了个括号,传入数字2的值,不要纠结,匿名函数这种写法,因为它本身也是函数,只是为了方便,简化了普通函数的那种写法,本质没有变,那么我用函数的方式调用也是一样可以的。