如何在Python3函数中将变量动态设置为全局变量?如下所示:
def func1(i):
global i
#Some operation on i我如何让全局变量来设置传递给函数的任何预先存在的变量?这样:
func1(foo)将在全局变量foo上执行操作,而不是创建一个名为i的新全局变量
发布于 2018-11-25 11:08:49
如果我没弄错,您的问题是:我在模块级将一个名称绑定到某个对象;现在,我想编写一个函数来更改该全局名称到另一个对象的绑定,该对象作为参数传递给该函数。
在Python中,全局名称可以在一个函数中引用(假设您不将另一个对象绑定到相同的名称),但是要更改它们的绑定,您必须首先将这些名称声明为global。原因很简单:默认情况下,绑定在函数内的所有名称都有函数作用域。
GLOBAL_NAME = 12
ANOTHER_GLOBAL_NAME = 50
def func(value):
global GLOBAL_NAME
GLOBAL_NAME = value
print(GLOBAL_NAME, ANOTHER_GLOBAL_NAME)当您调用func(33)时,GLOBAL_NAME将被绑定到对象33。ANOTHER_GLOBAL_NAME只是对全局名称的引用;因为该名称没有绑定到函数中,所以Python将在全局范围内查找该名称。
有关Python作用域封闭的更多信息,可以参考the global statement、PEP-0227和PEP-3104上的Python文档。
https://stackoverflow.com/questions/53463867
复制相似问题