Python陷阱一则

可能火星了,不过我确实是才知道。

当Python函数参数的默认值为列表这样的可见对象,只会被初始化一次,并非每次调用都会初始化为[]

例子:

def test(t=[]):
    t.append(
2)
    
print t

test()
test()

输出为:

[2]

[2,2]

正确的写法是:

def test(t=None):
    
if t==None: t=[]

我在Groovy和Ruby里面也试了一下,都没有这个问题。

原文地址:https://www.cnblogs.com/wupher/p/1660860.html