我知道我可以写:
foo = 'bar'
def update_foo():
global foo
foo = 'baz'
但是我真的需要两行代码吗? Python,唉,不允许我说
global foo = 'baz'
我也可以将这两行与不幸的重复混在一起
global foo; foo = 'baz'
还有其他捷径吗?我使用的是 Python 2.6.5,但我也很想听到针对 Python 3 的响应。
最佳答案
你可以使用我最喜欢的 global
替代品(一种非常特殊的品味......):
import sys
thismodule = sys.modules[__name__]
thismodule.foo = 'bar'
def update_foo():
thismodule.foo = 'baz'
一旦你创建了 thismodule
引用,你就不需要在这个模块中使用 global
,因为你一直在使用 qualified< [ [或具有此功能的其他标识符]] 回到 Python 3 孕育阶段)。
请注意,在全局级别对 foo
的第一次赋值可以使用此显式语法完成,或通过赋值给 barename foo
正如您在代码中所做的那样(我想我偏爱显式形式并不奇怪,但在这种情况下,几乎没有)。
关于python - 在 Python 的一行中覆盖全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3089208/