在python中, 函数的参数可以传递, 或者省略
当缺省参数时, 就使用默认参数, 这与其他语言的方法重载功能相似, 但原理不同
gl_list = [6,3,9]
gl_list.sort() #默认按照升序
print(gl_list)
gl_list.sort(reverse=True) #降序
print(gl_list)
输出结果如下:
[3, 6, 9]
[9, 6, 3]
这是因为, 升序用的更多, 故把升序作为默认值, 需要降序时传递reverse参数
指定函数缺省默认值
在编写函数时, 应该指定默认值, 否则就无法使用缺省参数
def print_info(name, gender=True): #在定义参数时指定
"""
:param name: 班级上同学的名字
:param gender: True 男, False 女
"""
gender_text = "男生"
if not gender:
gender_text = "女生"
print(name +"是"+ gender_text)
#假设班级男生居多, 则缺省时默认是男生
print_info("小明")
print_info("小红",False)
输出结果如下:
小明是男生
小红是女生
ps: 当一个参数有一个常见的值时, 可以设置为默认参数, 若参数不能确定, 不要缺省, 而是由外部传递
缺省值注意事项
①缺省参数必须定义在最后, 例如下面的定义是错误的
def print_info(name, gender=True, title): #在定义参数时指定
应该把gender 和 title的位置调换
②此外, 对于多个缺省参数, 在调用时应该指定参数名
def print_info(name, title="", gender=True): #在定义参数时指定
"""
:param name: 班级上同学的名字
:param gender: True 男, False 女
"""
gender_text = "男生"
if not gender:
gender_text = "女生"
print(title + name + "是" + gender_text)
#假设班级男生居多, 则缺省时默认是男生
print_info("小明")
print_info("小红",gender=False) #应该指定gender为False
#下面这个是错误的, False会被当成是title
#print_info("小红",False)