Python学习笔记010——匿名函数lambda

时间:2023-03-08 18:00:31
Python学习笔记010——匿名函数lambda

1 语法

my_lambda = lambda arg1, arg2 : arg1 + arg2 + 1

arg1、arg2:参数

arg1 + arg2 + 1 :表达式

2 描述

匿名函数不需要return来返回值,表达式本身结果就是返回值。

lambda 仅简洁了代码,并不会提高程序运行效率

如果可以用 for...in...if 来完成的,最好不使用匿名函数lambda

使用lambda时,函数内不要包含循环、嵌套;如果存在,则最好使用def函数来完成,这样的代码可读性和复用性均较高

lambda用来编写简单的函数,而def用来处理更强大的任务。

3 示例

3.1 无参数的匿名函数

>>> a = lambda:5
>>> a
<function <lambda> at 0x7f20f53be2f0>
>>> a()
5
>>> 

3.2 单个参数的匿名函数

a = lambda x:x+1
print(a(2))

运行: 3

3.3 多参数的匿名函数

a = lambda x, y: x + y + 1
print(a(1,2))
print(a(y=3,x=2))

运行:

4
6

3.4 其他

 >>> lambda x:x+1(1)
 <function <lambda> at 0x7f20f4cfb9d8>

有的博客上说输入第一行可以直接得到结果,其实仅仅得到了匿名函数的地址(十六进制)

>>> lambda x:x+1(1)
<function <lambda> at 0x7f20f4cfb9d8>

>>> id(lambda x:x+1(1))
139779554729768
>>> hex(id(lambda x:x+1(1)))
'0x7f20f4cfb9d8'

如果需要获得函数值,则

>>> (lambda x:x+1)(1)
2

同样

print(lambda x:x+1(1))    # <function <lambda> at 0x7fa097b54f28>

计算

(lambda x : (lambda y: (lambda z: x + y + z)(1))(2))(3)

等于多少?  6

参考python的匿名函数lambda解释及用法Python学习笔记(十二):lambda表达式与函数式编程Python lambda介绍