问题遇到的现象和发生背景
Python 两次调用同一个函数会改变形参的默认值
遇到的现象和发生背景,请写出第一个错误信息
下面是一段简单的函数,我们将它调用两次:
def func(A=[]):
A.append(1)
print(id(A))
return A
print(func()) # [1]
print(func()) # [1,1]
Output:
1449889792264
[1]
1449889792264
[1, 1]
第一次输出[1],第二次输出[1,1],id()函数反映两个A是同一个对象。不知道这是为什么,我把这个函数略作修改,List()改Set(),输出结果却正好相反:
def func(A=set()):
A.add(1)
print(id(A))
return A
print(func()) # {1}
print(func()) # {1,1}
Output:
2032723709064
{1}
2032723709064
{1}
依旧是同一个对象id,但是两次调用却没有改变默认形参的值
有没有精通Python的伙伴能解释一下。