python问题
作者:互联网
文章目录
一、python问题
1.匿名函数变量定义引用问题
下面的输出结果全是18
def testFun():
temp = [lambda x : i*x for i in range(10)]
return temp
for everyLambda in testFun():
print(everyLambda(2))
解:
因为python中变量是先定义再引用,而lambda匿名函数又是全执行完了再引用,所以引用的值(i)全是最后一个(9)
加一个默认参数
def testFun():
temp = [lambda x,i=i : i*x for i in range(10)]
return temp
for everyLambda in testFun():
print(everyLambda(2))
加了默认参数之后,python解释器每遇到默认参数时,都会初始化默认参数(i),这样,每循环一次,i就被引用一次。
总结
持续更新遇到的问题
标签:testFun,temp,python,问题,引用,everyLambda,lambda 来源: https://blog.csdn.net/zhi___you/article/details/120485705