我知道我可以写:
foo = 'bar'
def update_foo():
global foo
foo = 'baz'
Run Code Online (Sandbox Code Playgroud)
但我真的需要两行代码吗?Python,唉,不允许我说
global foo = 'baz'
Run Code Online (Sandbox Code Playgroud)
我还可以将两条线混合在一起,不幸的是重复
global foo; foo = 'baz'
Run Code Online (Sandbox Code Playgroud)
还有其他快捷方式吗?我正在使用Python 2.6.5,但我很想知道Python 3的响应.
Ale*_*lli 15
你可以使用我最喜欢的替代品global(一种非常特殊的味道......):
import sys
thismodule = sys.modules[__name__]
thismodule.foo = 'bar'
def update_foo():
thismodule.foo = 'baz'
Run Code Online (Sandbox Code Playgroud)
一旦你做了thismodule参考,你不需要global在这个模块中使用,因为你总是使用合格的名字而不是裸名称(更好的想法恕我直言......但也许只在MHO,我已经thismodule当Python 3怀孕时,无法说服Guido提供[[或其他一些具有此功能的标识符]].
需要注意的是第一分配foo,在全球范围内,既可以做这个明确的语法,或将其分配给barename foo,你在你的代码做(我想这并不奇怪,我的喜好去明确的形式,不过,在这案件,勉强).
您可以使用globals()字典将其编写为:
def update_foo():
globals()['foo'] = 'baz'
Run Code Online (Sandbox Code Playgroud)
但是我只想坚持两行,或者用一种;方法分开。
| 归档时间: |
|
| 查看次数: |
11090 次 |
| 最近记录: |