gpt4 book ai didi

python - unboundlocalerror 赋值前引用的局部变量 'i'

转载 作者:行者123 更新时间:2023-11-28 22:39:51 27 4
gpt4 key购买 nike

我是 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 关键字以访问全局变量而不是局部变量。即

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

关于python - unboundlocalerror 赋值前引用的局部变量 'i',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34331744/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com