def test(a, data=None):
# print('before check None:', id(data))
# if data is None:
# data = []
print('before append data id:', id(data))
data.append(a)
print('after append data id:', id(data))
return data
if __name__ == '__main__':
print('default data id:', id(test.__defaults__[0]))
print(test(1,[]))
print('default data id:', id(test.__defaults__[0]))
print(test(2,[]))
output:
default data id: 8791239723024
before append data id: 5853704
after append data id: 5853704
[1]
default data id: 8791239723024
before append data id: 5853704
after append data id: 5853704
[2]
我的理解:data id 都是同一个指针(5853704),在调用test(2,[])之后结果应该是 [1,2]
但是程序结果output为[2],这是为什么