我是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
不是全球
答案 0 :(得分:4)
在函数内声明global
关键字以访问全局而不是局部变量。即。
def dubleIncrement():
global j
j = j+2
def increment():
global i
i = i+1
请注意,当您在i = 0
语句中声明j = 0
和if
时,这是设置一个全局变量,但由于它超出了任何函数的范围,{{1这里没有必要使用关键字。
理想情况下,您应尽量避免使用全局变量,并尝试将变量作为参数传递给函数(想想当您决定使用变量名global
和{{1在其他一些函数中再次出现 - 可能会发生丑陋的碰撞!)。以下是编写代码的更安全的方法:
i