请参阅以下代码:
i = 1
s = [1]
def foo():
global i
i += 1
print i
def goo():
s.append(2)
print s
我想知道为什么PyIntObject默认是在本地设置而其他对象不是?
谢谢!
答案 0 :(得分:0)
除非您打算将global i
绑定到其他对象,否则您不需要i
。这同样适用于s
。由于它们都绑定到不可变对象,因此无法在不将它们绑定到新对象的情况下更改其“值”。
所以这没关系
def foo():
print i
但是你需要使用全局关键字
def foo():
global i
i = 'world'
同样适用于s。分配意味着您需要global
关键字
def goo():
global s
s = 2
当然,您可以更改可变对象,因此通常不需要将它们设为全局
i = [1]
def foo():
i[0] = 2
但是如果你想将它重新绑定到另一个对象,你仍然需要在那里使i
全局