之前发布过Python中函数的介绍:Python中函数的介绍 ,今天来做一个小小的补充说明:为什么说python里面函数参数的默认值最好不要使用可变类型
Python中,函数参数的默认值是在函数定义时计算的,而不是在每次函数调用时计算。当默认值是可变类型(如列表、字典等)时,这个默认值在函数定义时就会被创建并分配给参数。当函数被调用时,如果没有显式地传递该参数,函数将使用该默认值。
可变类型的默认值在函数定义时只会被创建一次,然后会在后续函数调用中重复使用。这意味着,如果在函数中修改了这个默认值,它将在后续的函数调用中保持修改后的值,而不是返回最初的默认值。
接下来我们通过一个例子演示一下:
def add(a:int,b:list=[]): # 定义函数的时候就创建了列表
print(id(b))
b.append(a)
print(b)
add(1)
add(2)
add(3)
从上面的运行结果,我们可以看出:
如果在函数的定义中,参数默认值使用可变类型,那么可变类型会在函数定义的时候就进行创建,如果使用不当的话,可能得到的效果与我们的预期不一致。
End