Skip to main content
 首页 » 编程设计

python之可变全局变量不会隐藏在 python 函数中,对吧

2025年05月04日14telwanggs

请看下面的代码:

def good(): 
  foo[0] = 9         # why this foo isn't local variable who hides the global one 
 
def bad(): 
  foo    = [9, 2, 3] # foo is local, who hides the global one 
 
for func in [good, bad]: 
  foo = [1,2,3] 
 
  print('Before "{}": {}'.format(func.__name__, foo)) 
  func() 
  print('After  "{}": {}'.format(func.__name__, foo)) 

结果如下:

# python3 foo.py 
Before "good": [1, 2, 3] 
After  "good": [9, 2, 3] 
Before "bad" : [1, 2, 3] 
After  "bad" : [1, 2, 3] 

请您参考如下方法:

因为您没有设置 foo,所以您在 foo 中得到了一些东西(准确地说是 foo[0])。

在 bad 中,您创建了一个新变量 foo。在 good 中,您可以执行类似 foo.set(0, 9) 的操作(将项目 0 设置为值 9)。这是使用一个变量,而不是定义一个新名称。