编程语言
首页 > 编程语言> > python问题

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