附加在函数中的Python列表意外地工作

时间:2018-05-09 22:52:23

标签: python list reference append late-binding

我在下面看到了Python代码,它显示了一个意想不到的行为。

def extendList(val, list=[] ):
    list.append(val)
    return list

list1 = extendList(10)
print "value of list1 before = %s" % list1

list2 = extendList(123,[])
list3 = extendList('a')

print "value of list1 after = %s" % list1    

据我所知,此代码的预期输出应为:

value of list1 before = [10]
value of list1 after = [10]

此代码的实际输出为:

value of list1 before = [10]
value of list1 after = [10, 'a']

我不确定为什么list1会在分配list3后更改其值,并将'a'附加到其当前值[10]

0 个答案:

没有答案