每当函数调用时更改全局变量

时间:2019-03-08 22:14:49

标签: python variables global

有人可以向我解释一下,无论何时调用globalChange()函数,如何将x的值更改为“不起作用”?非常感谢你!

def globallyChange():
    x = "didn't work"

def main():
    global x
    x = 10
    globallyChange() #Call the function for changes.
    print(x)

main()

CURRENT OUTPUT: >> 10

我尝试了相同的事情,但将list / array作为全局变量,并且在调用globalChange()函数时,它实际上是DID更改了全局变量列表。我想知道整数/字符串/布尔全局变量和列表全局变量之间有何区别?

def globallyChange():
    lst.append(1)
    lst.append(5)
    lst.append(7)

def main():
    global lst
    lst = []
    globallyChange() #Call the function for changes.
    print(lst)

main()

OUTPUT: >> [1,5,7]

2 个答案:

答案 0 :(得分:2)

您需要在分配给变量的所有函数中放入global声明。所以应该是:

def globallyChange():
    global x
    x = "didn't work"

在带有列表的版本中不需要它的原因是您没有分配给变量。您只是在读取变量;如果找不到局部变量,它将自动查找全局变量。 append()未分配给变量,而是修改了列表。

答案 1 :(得分:1)

您需要在所有引用x的函数中将x定义为全局变量。否则,python将创建一个新的局部变量。

尝试一下:

x = 0
def globallyChange():
    global x
    x = "didn't work"

def main():
    global x
    x = 10
    globallyChange() #Call the function for changes.
    print(x)