python函数参数中的/和*是什么意思

在python3.8之后函数参数中允许出现/和*号,/用来指明某些函数形参必须使用位置参数而非关键字参数的形式,*出现在函数参数中第一种含义可以表示为可变参数

,一般写作*args;对于单独出现在参数中的*参数,则表示,*后面的参数必须为关键字参数的形式,接下来详细说下该用法:

1 /参数的用法

如果你想要函数的调用者在某个参数位置只能使用位置参数而不能使用关键字参数传参,那么你只需要在所需位置后面放置一个/。

def f1(a, b, /):
    return a + b

对于上面这个函数而言,调用f1时参数a,b只能是特定的值,而不能以关键字传参,即f1(2, 3)执行正确而f1(a=2, 3)和f1(2, b=3)将执行错误。

2 *参数的用法

对于*的第一种用法比较常见,这里不再详述,这里主要详细解释*的第二种用法。如果你希望强迫调用者使用某些参数,且必须以关键字参数的形式传参,那么你只需要在所需位置的前一个位置放置一个*。

def f1(a, *, b, c):
    return a + b + c

对于上面这个函数而言,调用时参数a可以任意值, 但b,c参数一定要以关键字参数的形式传参,如f1(1, b=4, c=5),否则将会报错。

def f2(a, *, b, c=5):
    return a + b + c

如果是这种情况下调用函数,参数a可以任意值,但参数b一定要以关键字参数的形式传参,如f2(2, b=3),但是如果想传入c参数,那么c参数的要求和b参数一样都为关键字参数形式,如f2(2,b=3,c=4)。

3 /和*都出现在函数参数中

比如我们定义一个函数f

def f(a, b, /, c, *, d, e):
    print(a, b, c, d, e)

当我们调用函数f时,a,b参数可以为任意型python所支持的值,就是不能以关键字形式传参;c可以为任意型python所支持的值,d,e只能以关键字参数传参。以下调用方式均会抛出异常

f(a=1, 2, c=3, d=4, e=5) # a不能以关键字参数传参

f(1, 2, 3, 4, e=5) # d只能以关键字参数传参

4 总结

如果你希望调用者使用函数时一定不能使用关键字参数传参,那么只需要把这些参数放在/前即可;如果你希望调用者使用函数时一定要使用某些参数,且必须为关键字参数传参,那么只需要把这些参数放在*后面即可。

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值