【发布时间】:2015-01-26 21:41:50
【问题描述】:
最近,我参加了一个 Python 开发人员职位的面试。以下代码是问题之一。我只需要编写输出。
def extendList(val,list=[]):
list.append(val)
return list
list1 = extendList(10)
list2 = extendList(123,[])
list3 = extendList('a')
print "list1 = %s " %list1
print "list2 = %s " %list2
print "list2 = %s " %list3
输出是:
list1 = [10, 'a']
list2 = [123]
list2 = [10, 'a']
我试图了解为什么第一个列表 list1 具有 'a' 值。
编辑
我检查了所有链接,发现它是初学者的 python “陷阱”,但要感谢答案,不能选择两者,所以我选择第一个。
【问题讨论】:
-
This canonical answer 应该有帮助
-
我会说这是一个骗局,因为这个问题或任何答案都不太可能使未来的用户受益。这是一个已知的 Python “陷阱!”并且未来的读者应该被重定向到现有的解释。
-
@AdamSmith 这是重复的,因为答案基本上是
the default argument is mutable。它不必是完全相同的问题。这里没有可以添加的内容是 a/ 不在另一个问题中并且 b/ 可以被其他人重用。
标签: python list python-2.7