当我们在定义Python函数时,可以在函数参数中设置默认值。如果函数在调用时没有传递该参数的值,函数将使用默认值作为参数值。这被称为默认参数。
默认参数的设置格式为:在定义函数时,给参数指定一个默认值即可,如下所示:
def func(arg1, arg2=value):
# some code here
其中,arg1是必需的参数,arg2是可选的参数,当不传递arg2时,就会默认使用value作为arg2的值。
下面是对默认参数的一些详细介绍:
为什么使用默认参数
默认参数有很多使用场景,例如:
- 为参数提供默认值,方便调用函数时不用输入全部参数;
- 简化函数接口,使得函数更易于使用;
- 将函数的某个参数变成非必需参数;
设置默认参数的注意事项
设置默认参数时需要注意以下事项:
- 必选参数在前,可选参数在后;
- 某个参数有默认值就要该参数的后面参数一起有默认值;
- 如果默认参数是可变对象(比如列表、字典、集合、类实例等),则每次函数调用时都会使用同一个对象,这会导致那些默认值被修改的对象共享这个变量。所以切勿在函数定义时使用可变类型变量作为默认参数。
下面是两个示例说明:
示例一:
def add_values(value1, value2=10):
sum_value = value1 + value2
return sum_value
result = add_values(20)
print(result)
运行结果:
30
在示例中,我们定义了一个add_values函数,其中value2有默认值10。这意味着,调用add_values()时,如果没有传入value2,则默认使用10作为value2的值。所以,当我们仅传递一个参数20时,函数会自动填充默认参数并将20与10相加,最终返回总和30。
示例二:
def add_data(data_list=[]):
data_list.append(1)
return data_list
print(add_data())
print(add_data())
print(add_data())
运行结果:
[1]
[1, 1]
[1, 1, 1]
在示例2中,我们定义了一个add_data函数,其中的data_list参数是可变类型变量,默认为一个空列表[]。在第一次调用add_data()时,data_list是一个空列表,函数将1添加到该列表中并返回[1]。在第二次调用时,data_list仍然是同一个列表,现在它包含了之前添加的1,所以函数将1再次添加到该列表中并返回[1,1]。同样的,第三次调用将返回[1,1,1]。
这是因为在函数被定义时,可变类型变量默认使用共享内存地址,这意味着在任意一次函数调用时,使用的都是同一个data_list对象。如果改变了data_list的值,该值将反映在所有以前和以后的函数调用中。所以,不建议使用可变类型变量作为默认值。如果需要使用可变类型变量,最好给它设置None,然后在函数内部进行初始化操作。这样,每次调用函数时都会创建一个新的对象。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详细介绍Python函数中的默认参数 - Python技术站