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