Python for 变量作用域

2020-09-10  本文已影响0人  DebugWorld
for x in range(5):
    pass

print(x)
# 打印x结果是: 4

def test():
    _list = []
    for i in range(4):
        _list.append(lambda: i)
    return _list


print([f() for f in test()])
# [3, 3, 3, 3]

上面代码输出的是 [3, 3, 3, 3],而不是[0, 1, 2, 3],这是因为,在Pyhton中是没有block这个概念的。

Python中的作用域只有四种,即LEGB规则:

Python参考文档在for循环章节明确记录了这个行为:
For循环向目标列表里的变量赋值,[…]在该循环结束时,目标列表里的名字不会被删除,但如果该序列是空的,那么该循环完全没有向它们赋值。

上一篇 下一篇

猜你喜欢

热点阅读