修改与本地变量同名的全局变量

时间:2012-04-19 20:10:39

标签: python global-variables

假设我有一个全局变量a。在函数定义中,我们还有一个名为a的局部变量。有没有办法将全局变量的值赋给局部变量的值?

a = 'foo'

def my_func(a = 'bar'):
    # how to set global a to value of the local a?

4 个答案:

答案 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)

不要混淆全局和本地命名空间。在可能的情况下,始终尝试使用局部变量而不是全局变量。如果必须在范围之间共享变量,则仍然可以传递变量而无需全局占位符。与全局变量相比,本地变量的引用效率也更高。

一些链接:

Sharing Variables in Python

Variable performance