Python匿名函数:lambda表达式

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变化,所以调用列表中的函数返回值不同。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180301A10YPI00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券