Python中sorted(iterable, *, key=None, reverse=False)函数参数定义中的独立星号(*)的含义

老猿在 《Python中函数的参数带星号是什么意思?》中介绍了Python函数中参数带星号的含义,而在实际使用和Python的标准文档中,会看到某写函数(如sorted(iterable, *, key=None, reverse=False))的其中一个参数就是星号(*),而实际调用时该位置不用传值,这表示什么含义呢?
使用关键字参数时,要特别注意,如果不是通过《Python中函数的参数带星号是什么意思?》]中带2个星号的可变关键字参数传递可变个数的参数,且参数的名字随调用者随意填写,只能在后期解析参数时去进行处理。
如果需要限制关键字参数的输入名字,就需要使用到命名关键字参数的形式,所谓命名关键字参数就是给关键字参数限定指定的名字,输入其他名字不能识别。命名关键字参数和位置参数之间使用独立的星号(*)分隔,星号后面为命名关键字参数,星号本身不是参数。凡是命名关键字参数,在调用时必须带参数名字进行调用,否则会报错。
我们看个例子对比一下:

>>> def f(x1,x2,y1,y2): #全部是位置参数
	print(x1,x2,y1,y2)

	
>>> f(1,2,3,4) #不使用关键字方式传值调用
1 2 3 4
>>> f(1,2,y2=4,y1=3)  #使用关键字参数传值
1 2 3 4
>>> def f(x1,x2,*,y1,y2):#定义命名参数
	print(x1,x2,y1,y2)

	
>>> f(1,2,3,4) #不使用关键参数传值报错
Traceback (most recent call last):
  File "<pyshell#60>", line 1, in <module>
    f(1,2,3,4)
TypeError: f() takes 2 positional arguments but 4 were given
>>> f(1,2,y2=4,y1=3) #使用关键字参数传值
1 2 3 4
>>> 

老猿Python,跟老猿学Python! 博客地址:https://blog.csdn.net/LaoYuanPython

  • 24
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值