0

请看下面的代码:

i = 1
s = [1]

def foo():
  global i
  i += 1
  print i

def goo():
  s.append(2)
  print s

我想知道为什么 PyIntObject 默认设置在本地,而其他对象没有?

谢谢!

4

1 回答 1

0

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但是,如果您想将其重新绑定到不同的对象,您仍然需要在此处进行全局设置

于 2013-07-05T02:24:45.133 回答