python-函数-闭包-loop中没有域的概念-01

版权声明:左右代码均为自己总结,若有雷同请勿模仿 https://blog.csdn.net/weixin_44253023/article/details/89634087

flist = []
for i in range(3):
def foo(x):
print(x + i)
flist.append(foo)
for f in flist:
f(2)
“”"
1.Python的问题就在于,当循环结束以后,循环体中的临时变量i不会销毁,而是继续存在于执行环境中。还有一个python的现象是,python的函数只有在执行时,才会去找函数体里的变量的值。
2.可能有些人认为这段代码的执行结果应该是2,3,4.但是实际的结果是4,4,4。loop在python中是没有域的概念的,
flist在像列表中添加func的时候,并没有保存i的值,而是当执行f(2)的时候才去取,这时候循环已经结束,i的值是2,所以结果都是4。
“”"

猜你喜欢

转载自blog.csdn.net/weixin_44253023/article/details/89634087