python - 在 Python 的一行中覆盖全局变量?

标签 python

我知道我可以写:

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/

相关文章:

Python SDK Google Dataflow - 名称 'execfile' 未定义

python - 无法将输入翻译成字典

python - 将时间戳中的分钟值舍入到 pandas 数据框中的下 10 分钟

python - 如何获取 matplotlib 箱线图的箱线图数据

python - 如何在 TensorFlow 中定义自己的运算符

python - 尝试实现 python TestSuite

python - 如何优化以下代码?

python - 即使用户超时, View 也会完成吗?

python - Openpyxl ['MergedCell'对象属性 'hyperlink'是只读]问题

python - Unicode解码错误: 'utf8' codec can't decode byte 0xcb in position 5: invalid continuation byte