要更改函数内的全局变量,我们可以按照以下步骤进行操作:
让我们说全局变量有' x'作为一个名字:
def change_x_globally( new_value ):
global x
x = new_value
这种方法需要预先对变量的名称进行硬编码,如果有多个全局变量,这种方法变得麻烦且不实用
所以我会输入全局变量的名称,例如:如果我们想要改变x,我们会输入字符串" x"
因此,期望的最终函数将具有以下签名:
def change_global_variable( variable_name, new_value ):
pass
任何想法?
答案 0 :(得分:2)
您可以使用globals()
取回全局字典,然后按字符串进行处理,例如globals()['x'] = new_value
答案 1 :(得分:1)
您不应该在函数中更改全局值。如果你想这样做,可以使用@chepner提出的全局字典或使用类。
dict idea:
values = {"x":0,"y":1}
def test(5):
values["x"]=5
课堂理念:
class Values:
x = 0
y = 0
# possibility one: class gets instantiated and then the main method gets called
def run(self):
self.x = 4
# possibility two: class doesn't get instantiated and the values are written two by module level functions
def test(v):
Values.x = v