是指在函数定义中,为参数设置默认值的一种方式。当调用函数时,如果没有为该参数提供值,则会使用默认值。
列表引用的默认参数可以通过在函数定义中为参数赋值来实现。例如:
def func(param=[]):
param.append(1)
return param
print(func()) # 输出 [1]
print(func()) # 输出 [1, 1]
在上面的例子中,函数func
的参数param
默认值为一个空列表[]
。每次调用函数时,如果没有为param
提供值,就会使用默认值。由于默认值是一个可变对象,而函数在定义时只会创建一次默认值对象,所以每次调用函数时,都会使用同一个默认值对象。
这就导致了一个问题:如果在函数中修改了默认值对象,那么下次调用函数时,会使用已经修改过的默认值。这可能会导致意外的结果。例如,在上面的例子中,每次调用func
时,都会向param
列表中添加一个元素1
。这是因为param
默认值只在函数定义时创建一次,所以每次调用函数时,都会使用同一个默认值对象。
为了避免这个问题,可以将默认值设置为None
,然后在函数内部检查参数是否为None
,如果是,则创建一个新的默认值对象。例如:
def func(param=None):
if param is None:
param = []
param.append(1)
return param
print(func()) # 输出 [1]
print(func()) # 输出 [1]
在上面的例子中,函数func
的参数param
默认值为None
。在函数内部,首先检查param
是否为None
,如果是,则创建一个新的空列表作为默认值对象。这样,每次调用函数时,都会使用一个新的默认值对象,避免了意外的结果。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云