>[success] # 匿名函数 ~~~ 尽管lambda表达式允许你定义简单函数,但是它的使用是有限制的。你只能指定单个表达式,它的值就是最后的返回值。也 就是说不能包含其他的语言特性了,包括多个语句、条件表达式、迭代以及异常处理等等。 你可以不使用lambda表达式就能编写大部分python代码。但是,当有人编写大量计算表达式值的短小函数或者需要用户提供 回调函数的程序的时候,你就会看到lambda表达式的身影了。 ~~~ >[danger] ##### lambda代码简单理解 ~~~ add = lambda x,y:x+y print(add(3,4)) # 等同于上面的lambda def add(x, y ): return x + y print(add(3, 4)) 打印结果: 7 7 ~~~ >[success] # 匿名函数绑定变量值 >[danger] ##### 变量声明案例 ~~~ 1.下面的案例 如果按照传统的想法打印的结果应该是 20 /30 2.实际打印结果是30 3.匿名函数和函数区别在,匿名函数式调用的时候,变量起作用,也就是说x=20把x=10覆盖掉了,运行就近原则, 执行结果 30 4.下面执行的时候a(10)中里面的参数代指的是y,外变量x 实际是内部x ~~~ ~~~ x = 10 a = lambda y:x+y x = 20 b = lambda y:x+y print(a(10)) print(b(10)) ~~~ >[danger] ##### 避免上面的情况 ~~~ x = 10 a = lambda y,x=x: x+y x = 20 b = lambda y,x=x: x+y print(a(1)) print(b(1)) ~~~ >[danger] ##### 利用上面特性写一个lambda ~~~ funcs = [lambda x: x+n for n in range(5)] for f in funcs: print(f(0)) 打印结果: 4 4 4 4 4 funcs = [lambda x, n=n: x+n for n in range(5)] for f in funcs: print(f(0)) 打印结果: 0 1 2 3 4 ~~~