1、Python 用 lambda 表达式创建匿名函数。
图:Python语言lambda表达式语法
2、示例:
图:lambda表达式示例
3、匿名函数做返回值
4、lambda 表达式做函数参数
图:lambda表达式做函数参数
5、lambda表达式可以嵌套
图:lambda表达式嵌套
6、lambda表达式与作用域
lambda 表达式参数只在lambda表达式内可见:
图:lambda表达式参数为局部变量
lambda表达式创建函数,函数代码并不执行,lambda表达式参数相当于函数内部变量,lambda表达式内部可见,外部不可见。如print (x)时,会报NameError异常。
图:lambda引用外部变量
lambda x:x+y
x是lambda表达式的参数,y是lambda表达式外部的变量,第一次执行f(100)时,y未定义,所以报错。定义y后,再执行f(100)则OK。
缺省参数lambda表达式:
这个种情况下,每次lambda表达式生成函数时,对x进行求值,然后返回值会替换成已经求值的数*2,则x会有个缺省的绑定对象。
如当i=2时 lambda x=i: x*2 生成的函数类似:
而当 i=3 时,生成的函数类似:
依次类推。
lambda 表达式与闭包:
图:lambda表达式与闭包
这种情况下,lambda表达式:lambda :i * 2,生成函数时 i*2 是未求值的,返回的是 i*2 表达式,
返回的函数类似:
所以调用函数时,i 的值将决定函数的返回值。
上例中第一次调用列表中函数时,i=5,所以执行结果都是10.
上例中第二次调用列表函数时,因为循环变量使用的i,每次调用函数i变化,所以调用列表中的函数返回值不同。
领取专属 10元无门槛券
私享最新 技术干货