欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

函数的实参与形参(位置 / 默认 / 可变 / 关键字参数)

程序员文章站 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)查看其数据的存储方式

函数的实参与形参(位置 / 默认 / 可变 / 关键字参数)

相关标签: Python python