假设我有一个全局变量a
。在函数定义中,我们还有一个名为 a
的局部变量。有没有办法将全局变量的值分配给局部变量的值?
a = 'foo'
def my_func(a = 'bar'):
# how to set global a to value of the local a?
使用内置函数globals()
.
globals()
返回表示当前全局符号的字典 桌子。这始终是当前模块的字典(在 函数或方法,这是定义它的模块,而不是 从中调用它的模块)。
a = 'foo'
def my_func(a = 'bar'):
globals()['a'] = a
顺便说一句,值得一提的是,全局仅在模块范围内是"全局的"。
一开始就不要混淆全局和本地命名空间。如果可能,请始终尝试使用局部变量而不是全局变量。如果必须在作用域之间共享变量,则仍然可以传递变量,而无需全局占位符。引用局部变量也比全局变量更有效。
几个链接:
在 Python 中共享变量
可变性能
>>> a = 'foo'
>>> def my_func(a='bar'):
... return globals()['a']
...
>>> my_func()
'foo'