还记得之前我们为了使用功能避免进行多次操作,可以选择构建一个框架,框架的功能定义好后就可以直接使用了,同样我们的参数也可以这样定义。在函数调用参数之前,我们就可以给参数赋予值,调用的时候就会自动显示,也省去了我们每次输入的麻烦。那么,我们所学的数组可以作为默认参数吗?接下来我们就一起探讨一下。
默认参数用于定义函数,为参数提供默认值,调用函数时可传可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)
# 正确的默认参数定义方式--> 位置参数在前,默认参数在后 def print_hello(name, sex=1): .... # 错误的定义方式 def print_hello(sex=1, name): .... # 调用时不传sex的值,则使用默认值1 # print_hello('tanggu') # 调用时传入sex的值,并指定为2 # print_hello('tanggu', 2)
在使用默认参数的时候要特别注意的一点是,默认参数必须要指向不可变对象,比如数组、字典这些都是可变对象,是不能被用作默认参数的,至于为什么,这里不细说了,大家先记住就好,看下面这个例子。
#默认参数,注意不能使用list或dict等作为默认参数 def defaultParams(m=1,n=100): sum = 0 for i in range(m,n+1): sum += i print(sum) return sum #如果使用list数组来作为默认参数,多次调用函数的返回值会发生变化,在使用过程要特别注意 def defaultParamsTemp(list=[]): list.append(9) print(list) return list defaultParams(1,3) defaultParamsTemp() defaultParamsTemp() defaultParamsTemp()6 [9] [9, 9] [9, 9, 9]
通过我们对于默认参数基础知识的了解,因为数组是可变的,而只有不可变对象才能作为默认参数,所以数组是不能在python中作为默认参数的,这点小伙伴们一定不能弄错了。
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试