在赋值之前引用了unboundlocalerror局部变量'i'

时间:2015-12-17 10:05:09

标签: python

我是python尝试执行此代码的新手:

def dubleIncrement():
    j = j+2

def increment():
    i = i+1
    dubleIncrement()

if __name__ == "__main__":

    i = 0
    j = 0
    increment()
    print i
    print j

但是得到了这个错误:

unboundlocalerror local variable 'i' referenced before assignment

任何人都知道为什么i不是全球

1 个答案:

答案 0 :(得分:4)

在函数内声明global关键字以访问全局而不是局部变量。即。

def dubleIncrement():
    global j
    j = j+2

def increment():
    global i
    i = i+1

请注意,当您在i = 0语句中声明j = 0if时,这是设置一个全局变量,但由于它超出了任何函数的范围,{{1这里没有必要使用关键字。

理想情况下,您应尽量避免使用全局变量,并尝试将变量作为参数传递给函数(想想当您决定使用变量名global和{{1在其他一些函数中再次出现 - 可能会发生丑陋的碰撞!)。以下是编写代码的更安全的方法:

i