繁体   English   中英

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

[英]unboundlocalerror local variable 'i' referenced before assignment

我是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不全球化

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

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

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

请注意,当在if语句中声明i = 0j = 0时,这是在设置全局变量,但由于它不在任何函数的范围内,因此在此处不必使用global关键字。

理想情况下,您应该尽量避免使用全局变量,并尝试将变量作为参数传递给函数(想想当您决定在其他函数中再次使用变量名ij时会发生什么情况)可能会发生!)。 以下是编写代码的一种更安全的方法:

def dubleIncrement(x):
    x = x+2
    return x

def increment(x):
    x = x+1
    return x

if __name__ == "__main__":
    i = 0
    j = 0
    i = increment(i)
    j = dubleIncrement(j)
    print i
    print j

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM