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: 30233096
after append data id: 30233096
[1]
default data id: 8791239723024
before append data id: 30233096
after append data id: 30233096
[2]
我认为在调用test(2,[])之后,应该打印出来[1,2]才是,因为两个列表的指针都是指向30233096地址,但是程序结果却是[2]
这让我有点疑惑,请大神详细解答