gpt4 book ai didi

python - 更改变量会导致在赋值之前引用

转载 作者:行者123 更新时间:2023-11-30 23:21:23 30 4
gpt4 key购买 nike

我遇到了迄今为​​止我遇到的最奇怪的错误。我的代码很简单:

wtf = 5
def update():
print(wtf)
wtf = 1

update()

# wtf = 1 行注释掉后,一切正常,并打印 5。但是,如果我取消注释 # wtf = 1,在打印出 wtf (5) 之前,我会收到 UnboundLocalError: local variable 'wtf' referenced分配之前。我不知道这里发生了什么。为什么会发生这种情况?

最佳答案

当该函数中只有 print(wtf) 时,Python 会假设您只是尝试打印全局 wtf。如果您添加 wtf = 1,那么 Python 会被迫假设您正在尝试更改局部变量 - 您无法为函数中的全局变量分配新值,除非您使用 global wtf 在顶部。因此,在第二种情况下,Python 假定 wtf 是本地变量,这就是 print(wtf) 语句失败的原因 - 您现在尝试在之前打印本地变量它被分配了,或者说 Python 是这么认为的。

要解决此问题,请将 global wtf 添加为 update 函数的第一行。

关于python - 更改变量会导致在赋值之前引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25000000/

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