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

tsk*_*zzy 21 python global-variables

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

a = 'foo'

def my_func(a = 'bar'):
    # how to set global a to value of the local a?
Run Code Online (Sandbox Code Playgroud)

var*_*tec 33

使用内置功能globals().

globals()

返回表示当前全局符号表的字典.这始终是当前模块的字典(在函数或方法内部,这是定义它的模块,而不是调用它的模块).

a = 'foo'

def my_func(a = 'bar'):
    globals()['a'] = a
Run Code Online (Sandbox Code Playgroud)

顺便提一下,值得一提的是,全局只是模块范围内的"全局".