python的位置形参和关键字形参的限定

版权声明:转载请注明作者(独孤尚良dugushangliang)出处:https://blog.csdn.net/dugushangliang/article/details/101350477

 

def fun(a,b):
    #do what you want
    pass

#全是位置形参
fun('happy',70)
#全是关键字形参
fun(a='happy',b=70)
#位置形参加关键字形参,其中全部位置形参要在全部关键字形参之前
fun('happy',b=70)

#上述操作,都由调用函数的人任取方式。下面是如何限定某参数必须用某形式。
#参照https://docs.python.org/zh-cn/3.8/whatsnew/3.8.html

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

#形参a和b为仅限位置形参,c或d可以是位置形参或关键字形参,而e或f要求为关键字形参
f(10, 20, 30, d=40, e=50, f=60)

 

对于形参的两种形式(位置、关键字)的限定,对于python的版本有要求。其中对于位置的限定,是python 3.8的新特性,在python3.8之前是可以限定关键字的。

本文的关键是:/作为参数列表中的一位,表示其前的参数都是位置形参,都要使用位置传参。*作为参数列表中的一位,表示其后的参数都是关键字形参,都要使用关键字传参。这决定了/必在*之前。这两者中间的参数可以任选方式,既可以使用位置也可以使用关键字,但这个需要在一个原则下:任一位置传参之前的参数都必须是位置传参不可以是关键字传,即任一关键字传参之后不可有位置传参。/是python 3.8及以后可用,*则在python 3.8版本之前可用,至于哪个版本起可用,留待后考。

 

独孤尚良dugushangliang——著

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值