修改与局部变量同名的全局变量



假设我有一个全局变量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'

相关内容

  • 没有找到相关文章

最新更新