gpt4 book ai didi

python - 使用 UnboundLocalError 的本地和全局引用

转载 作者:太空宇宙 更新时间:2023-11-04 02:37:05 25 4
gpt4 key购买 nike

我不太明白为什么代码

def f():
print(s)

s = "foo"
f()

运行得很好但是

def f():
print(s)
s = "bar"

s = "foo"
f()

给我 UnboundLocalError。我知道我可以通过将 s 声明为函数内部的全局变量或简单地将 s 参数传递给函数来解决此问题。

我仍然不明白 python 如何在执行该行之前似乎知道函数内部是否引用了 s?当函数被读入全局框架时,python 是否会生成某种所有局部变量引用的列表?

最佳答案

其他答案都集中在这方面的实际方面,但并没有真正回答你问的问题。

是的,Python 编译器在编译代码块(例如在 def 中)时跟踪分配了哪些变量。如果在 block 中分配了名称,编译器会将其标记为本地。查看 function.__code__.co_varnames 以查看编译器已识别哪些变量。

nonlocalglobal 语句可以覆盖它。

关于python - 使用 UnboundLocalError 的本地和全局引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47620697/

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