在某些情况下,程序需要在定义函数时为一个或多个形参指定默认值一一这样在调用函数时就可以省略为该形参传入参数值,而是直接使用该形参的默认值。为形参指定默认值的语法格式如下:
形参名=默认值
从上面的语法格式可以看出,形参的默认值紧跟在形参之后,中间以英文“=”隔开。
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/01
# @Author : Laopi
#定义一个函数,为三个参数指定默认值
def person(name="软件测试老痞",weight=80,height=90):
print("name:",name)
print("weight:", weight)
print("height:", height)
return "你的名字是:"+name+"。你的体重是:"+str(weight)+"kg。你的身高是:"+str(height)+"cm。"
#全部使用默认值
print(person())
#只有name使用默认值
print(person("软件测试划水老师傅"))
#所有参数都不使用默认值
print(person(name="软件测试划水老师傅",weight=50,height=60))
#只有height不用默认值
print(person(height=70))
上面程序中在定义person()函数时为name,weight,height形参指定了默认值,因此程序中print(person())函数时没有为name,weight,height参数指定参数值,此时name,weight,height参数将会使用其默认值:程序第二次调用person()函数时为name参数(使用位置参数指定了参数值此时weight,heigh 参数将会使用默认值:程序第三次调用person()函数时为name,weight,height 参数(使用位置参数)都指定了参数值,因此这三个参数都使用开发者传入的参数值:程序第四次调用person()函数时只为height参数(使用关键字参数)传入了参数值此时name,weight参数将使用默认值。运行上面程序,可以看到如下输出结果。
从上面程序可以看出,如果只传入一个位置参数,由于该参数位于第一位,系统会将该参数值传给name参数。因此,我们不能按如下方式调用person()函数。
person(80)
上面调用时,会将80传给name,而不是后面的weight
我们也不能按照如下的方式调用person()函数
print(person(name="亚特兰",80))
因为Python规定:关键字参数必须位于位置参数的后面。因此提示错误:positional argument follows keyword argument
follows keyword argument。