Python 2.x中的while循环范围

时间:2016-05-28 12:34:37

标签: python python-2.7 while-loop scope

我是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

0 个答案:

没有答案