假设我有一个全局变量a
。在函数定义中,我们还有一个名为a
的局部变量。有没有办法将全局变量的值赋给局部变量的值?
a = 'foo'
def my_func(a = 'bar'):
# how to set global a to value of the local a?
答案 0 :(得分:29)
使用built-in function globals()
。
globals()
返回表示当前全局符号的字典 表。这始终是当前模块的字典(在 函数或方法,这是定义它的模块,而不是 调用它的模块。
a = 'foo'
def my_func(a = 'bar'):
globals()['a'] = a
顺便提一下,值得一提的是,全局只是模块范围内的“全球”。
答案 1 :(得分:1)
让python知道你想要全局版本;
def my_func():
global a
a = 'bar'
答案 2 :(得分:0)
>>> a = 'foo'
>>> def my_func(a='bar'):
... return globals()['a']
...
>>> my_func()
'foo'
答案 3 :(得分:0)
不要混淆全局和本地命名空间。在可能的情况下,始终尝试使用局部变量而不是全局变量。如果必须在范围之间共享变量,则仍然可以传递变量而无需全局占位符。与全局变量相比,本地变量的引用效率也更高。
一些链接: