在函数内动态更改全局变量值

时间:2018-04-24 14:10:47

标签: python python-2.7

要更改函数内的全局变量,我们可以按照以下步骤进行操作:

让我们说全局变量有' x'作为一个名字:

def change_x_globally( new_value ):
    global x 
    x = new_value

这种方法需要预先对变量的名称进行硬编码,如果有多个全局变量,这种方法变得麻烦且不实用

所以我会输入全局变量的名称,例如:如果我们想要改变x,我们会输入字符串" x"

因此,期望的最终函数将具有以下签名:

def change_global_variable( variable_name, new_value ):
    pass

任何想法?

2 个答案:

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