函数的实参与形参(位置 / 默认 / 可变 / 关键字参数)
程序员文章站
2022-07-05 20:00:37
...
一. 函数的参数
函数分为形参(形式参数)和实参(实际参数)
形参又分为:位置参数(必选参数)、默认参数、可变参数、关键字参数
- 实参
调用函数时,小括号中的参数,用来传递给函数用的,称为"实参" - 形参
定义函数时,小括号中的参数,是用来接收参数用的,称为"形参"。此外形参是可以任意修改的。
必选参数 | 必须要传递的参数 |
---|---|
默认参数 | 如果没有传递参数,使用默认值;如果传递了参数,则使用传递的参数 |
可变参数 | 用户传的参数个数是可以变化的参数,一般写做 *args ,数据以元组(tuple)的方式存储 |
关键字参数 | 用户传递参数个数可以是多个,并且每个参数需要两个信息(key-value),一般用**kwargs表示。数据以字典(dict)的方式存储 |
二. 位置参数(必选参数)
实参和形参的个数必须保持一致,最好按照位置传参,如果位置不对,则可以直接指定说明
1)代码
# 位置参数
def getInfo(name,age):
print(name,age)
getInfo('lyqiu',21)
getInfo(21,'lyqiu') #错误的调用,与我们想要的结果不一致
getInfo(age=21,name='lyqiu') #当位置不对应时,需要加以指定说明
2)结果展示
3)验证形参、实参个数必须一致
- 以下情况形参与实参个数不一致,会产生报错。如果使用了默认参数,那么编译还是成功的
- 报错信息
TypeError: getInfo() missing 1 required positional argument: 'age'
显示age没有对应的参数
三. 默认参数
形参和实参可以不一致。如果没有传递的参数,则使用默认值;如果不想使用默认的参数,则可以在调用时进行指定
1)代码
#默认参数
def mypow(x,y=2): #形参中默认y=2(x是必选参数,y是默认参数)
print(x**y) #求次方
mypow(4) #使用默认值,执行结果是4的平方
mypow(2,3) #不使用默认值,指定了y=3,所以此时的执行结果为2的立方
2)结果展示
3)验证形参、实参个数可以不一致
-
结果展示中 mypow(4)
验证了个数可以不一致 - 对比位置参数中的验证结果,可以发现使用默认参数,此时虽然形参与实参个数不一致,但是会显示正确结果
四. 可变参数
*args
代表可变参数,args传进来的值是以元组为数据类型的。此外形参是可以任意修改的,*a *b *ccc
都是正确的写法,不用拘泥于*args(但是推荐这么写)
1)代码
#可变参数
# 场景:想要传递1,2,3,4 ... 10个值过来
def mysum(*args):
sum = 0
for item in args:
sum += item
print(sum)
mysum(1,2,3,4,5)
mysum(1,33,2,4)
2)结果展示
3)验证传递进去的参数是元组(tuple)类型
def sum(*args):
print("args: ", args)
print("args type: ", type(args)) # 验证类型
result = sum(10, 20)
print(result)
五. 关键字参数
**kwargs代表关键字参数,用户传递参数个数可以是多个,但每个参数需要两个信息(key-value)
1)代码
#关键字参数
def getInfo(name,age,**kwargs):
print(name,age)
print(kwargs)
getInfo('lyqiu',21,gender='female',hobbies=['listening','running'])
2)结果展示
3)查看其数据的存储方式
上一篇: 计算机组成原理(三)
下一篇: 标题中的引号分享到微信不识别问题解决