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("list3 = %s" % list3)
结果为:
list1 = [10, 'a']
list2 = [123]
list3 = [10, 'a']
新的默认列表list仅仅只在函数被定义时创建一次。随后当 extendList 没有被指定的列表参数调用的时候,其使用的是同一个列表list。因此,list1 和 list3 是操作的相同的列表(也就是[]对象的引用相同,id值也就相同)。而list2是操作它创建独立的列表(通过传递它自己的空列表作为list参数的值)。