gpt4 book ai didi

python - 为什么您可以读取但不能修改全局值?

转载 作者:行者123 更新时间:2023-11-28 20:51:31 24 4
gpt4 key购买 nike

>>> import sys
>>> print(sys.version)
2.4.4
>>> b = 11
>>> def foo2():
... a = b
... print a, b
...
>>> foo2()
11 11
>>> def foo3():
... a = b
... b = 12
... print a, b
...
>>> foo3()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in foo3
UnboundLocalError: local variable 'b' referenced before assignment
>>> def foo4():
... global b
... a = b
... b = 12
... print a, b
...
>>> foo4()
11 12

问题> 在foo3中,为什么你可以访问全局变量而不声明它,但你仍然不能修改它。

最佳答案

如果没有 global 声明,Python 编译器会扫描每个函数的整个代码,以查看函数代码中分配给 的变量。在 foo3() 中,您同时为 ab 赋值,因此它们都被视为函数内的局部变量。

当方法代码执行时,在你执行a = b的时候,b还没有值(因为你还没有给它赋值) .因此,您会得到一个 UnboundLocalError

这样做是为了在函数中使用变量总是引用相同的位置,即使还没有分配给它。

关于python - 为什么您可以读取但不能修改全局值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9447189/

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