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里面也试了一下,都没有这个问题。

 

 

posted @ 2010-02-01 11:14  wupher  阅读(277)  评论(1编辑  收藏  举报