有人可以向我解释一下,无论何时调用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]
答案 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)