[英]UnboundLocalError: local variable 'i' referenced before assignment
[英]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 = 0
和j = 0
时,这是在设置全局变量,但由于它不在任何函数的范围内,因此在此处不必使用global
关键字。
理想情况下,您应该尽量避免使用全局变量,并尝试将变量作为参数传递给函数(想想当您决定在其他函数中再次使用变量名i
和j
时会发生什么情况)可能会发生!)。 以下是编写代码的一种更安全的方法:
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.