Skip to main content
 首页 » 编程设计

python之将列表作为默认函数参数的奇怪行为

2025年05月04日10unruledboy

<分区>

Possible Duplicate:
“Least Astonishment” in Python: The Mutable Default Argument
List extending strange behaviour
Pyramid traversal view lookup using method names

假设我有这个功能:

def a(b=[]): 
    b += [1] 
    print b 

调用它会产生这样的结果:

>>> a() 
[1] 
>>> a() 
[1, 1] 
>>> a() 
[1, 1, 1] 

当我将 b += [1] 更改为 b = b + [1] 时,函数的行为发生了变化:

>>> a() 
[1] 
>>> a() 
[1] 
>>> a() 
[1] 

b = b + [1] 与 b += [1] 有何不同?为什么会这样?