在定义Python函数时可定义形参(形式参数的意思)这些形参的值要等到调用时才能确定下来,由函数的调用者负责为形参传入参数值。简单来说,就是谁调用函数,谁负责传入参数值。
关键字(keyword)参数
Python函数的参数名不是无意义的,Python 允许在调用函数时通过名字来传入参数值。因此Python函数的参数名应该具有更好的语义,程序可以立刻明确传入函数的每个参数的含义。
按照形参位置传入的参数被称为位置参数。如果使用位置参数的方式来传入参数值,则必须严格按照定义函数时指定的顺序来传入参数值:如果根据参数名来传入参数值,则无须遵守定义形参的顺序,这种方式被称为关键字(keyword)参数。例如如下程序。
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/01
# @Author : Laopi
#定义一个函数
def person(name,weight,height):
print("name:",name)
print("weight:", weight)
print("height:", height)
return "你的名字是:"+name+"。你的体重是:"+str(weight)+"kg。你的身高是:"+str(height)+"cm。"
#传统调用函数的方式,根据位置传入参数
print(person('测试划水老师傅',180,175))
#根据关键字参数来传入参数值
print(person(name='测试划水老师傅',weight=60,height=120))
#根据关键字参数来传入参数值,可以交换位置
print(person(weight=70,name='测试老痞',height=130))
#不分关键字参数来传入参数值
print(person('测试划水老师傅',weight=60,height=120))
上面程序定义了一个简单的person()函数,该函数包含 name,weight,height三个参数,该函数与前面定义的函数并没有任何区别。
接下来在调用该函数时,既可使用传统的根据位置参数来调用(print(person('测试划水老师傅',180,175))),也可根据关键字参数来调用(print(person(weight=70,name='测试老痞',height=130))),在使用关键字参数调用时可交换参数的位置(print(person(weight=70,name='测试老痞',height=130))),还可混合使用位置参数和关键字参数(print(person('测试划水老师傅',weight=60,height=120)))。
需要说明的是,如果希望在调用函数时混合使用关键字参数和位置参数,则关键字参数必须位于位置参数之后。换句话说,在关键字参数之后的只能是关键字参数。例如如下代码是错误的。
print(person('测试划水老师傅',weight=60,120))
运行会出现下面的错误