返回介绍

3.2 函数参数

发布于 2024-01-21 22:13:25 字数 1559 浏览 0 评论 0 收藏 0

Python中的函数参数主要有3种形式,分别是:

1)位置或关键字参数。

2)任意数量的位置参数。

3)任意数量的关键字参数。

我们在阅读函数时,需要注意函数的参数列表,没有带默认值的参数需要我们往函数传递值,而带默认值的参数可以不传递值。

1.位置或关键字参数

这种参数是Python默认的参数类型,函数的参数定义为该类参数后,可以通过位置参数,或者关键字参数的形式传递参数,例如:

def  fun2(a,b,c):
    print a,b,c
# 可以使用位置参数
>>>fun2(1,2,3)               # 输出
1,2,3
#可以使用关键字参数,关键字参数间的顺序没有关系
>>>fun2(a=1,c=3,b=2)          # 输出
1,2,3
#也可以混合使用位置参数和关键字参数,但位置参数必须在关键字参数的前面
>>>fun2(1,c=3,b=2)               # 输出
1,2,3
>>>func(a=1,2,3)               # 报错

函数参数列表中可以定义默认参数 ,但Python不允许带默认值的参数定义在没有默认值的参数之前,因为这样写是有歧义的。假设允许定义:

def  fun3(a=1,b):
    print a,b

那么我调用fun3(2),虽然程序员希望a=1,b=2,但Python的位置参数是按顺序赋值的,程序会先把2赋值给a,从而没有参数赋值给b了,所以程序会报错。如果改成:

def  fun3(a,b=2):
    print a,b

调用fun3(1)时,按照顺序,先将1赋值给a,虽然后面没有参数传入,但b已经有默认值,因此这样写程序没有歧义,输出1,2。

2.任意数量的位置参数

任意数量的位置参数在定义的时候是需要一个星号前缀 来表示的,在传递参数的时候,可以在原有参数的后面添加0个或多个参数,这些参数将会被放在元组内并传入函数。任意数量的位置参数(一个星号前缀)必须定义在位置或关键字参数(无须星号)之后,且在任意数量的关键字参数(两个星号前缀)之前。如:

def  fun4(str1,*numbers):
    print fun4 , numbers
>>>fun4("numbers:",1,2,3,4)     #输出
numbers: (1, 2, 3, 4)

def fun4(*numbers,str1)这样定义参数列表是不允许的,因为同样有歧义。

3.任意数量的关键字参数

任意数量的关键字参数在定义的时候,参数名称前面需要有两个星号(**)作为前缀,这样定义出来的参数,在传递参数的时候,可以在原有的参数后面添加任意0个或多个关键字参数,这些参数会被放到字典内并传入到函数中。带两个星号前缀的参数必须定义在所有带默认值的参数之后。

def  fun4(a=1,*numbers,**kwargs):
    print a,numbers,kwargs
>>>fun4(4,2,3,4,b=2,c=3)
#输出
4 (2, 3, 4) {'c': 3, 'b': 2}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文