Python
Python copied to clipboard
匿名函数这章节是否可以新增两个demo,以便更好理解
https://www.readwithu.com/Article/PythonBasis/python6/5.html
这主要在于 lambda 表达式中的 num2 是一个自由变量,在运行时绑定值,而不是定义时就绑定,这跟函数的默认值参数定义是不同的。所以建议还是遇到这种情况还是使用第一种解法。
这里的表达一开始不是很理解。自己尝试了下面的例子,加深理解。
书中例子为如下:
# -*- coding: UTF-8 -*-
num2 = 100
sum1 = lambda num1 : num1 + num2 ;
num2 = 10000
sum2 = lambda num1 : num1 + num2 ;
print( sum1( 1 ) )
print( sum2( 1 ) )
输出为:
10001
10001
其实可以理解为在调用sum1()和sum2()的时候,num2在第二次赋值的时候已经变成了 10000,所以输出为10001。就是理解为在运行时绑定值,而不是定义是绑定。应该是看在函数调用的时候,num2的值为什么。
配合以下的demo就比较清晰的理解了。
# -*- coding: UTF-8 -*-
num2 = 100
sum1 = lambda num1 : num1 + num2 ;
print( sum1( 1 ) )
num2 = 10000
sum2 = lambda num1 : num1 + num2 ;
print( sum1( 1 ) )
输出为:
101
10001
这里调用sum1()的时候num2 还未被赋值,能更好理解。新手,如果有理解偏差,多多包涵。