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