我是Python新手,这是一个令我困惑的问题:
i = 1
def foo():
while i < 5:
print 'in while loop'
i += 1
foo()
此代码产生错误:
UnboundLocalError:局部变量&#39; i&#39;在分配前引用
为什么 循环时看到全局 i ? 如LEGB规则中所述,Python将按顺序搜索变量名称,直到最终在全局范围内搜索?!
为什么我必须通过添加 global 关键字明确地引用 i 是全局的
i = 1
def foo():
global i
while i < 5:
print 'in while loop'
i += 1
另一方面,这里foo打印 i 的全局值,&#39; 1&#39;不添加全局关键字。
i = 1
def foo():
print 'i equals %d' % i