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

原文地址:https://www.cnblogs.com/LaoYuanPython/p/11144508.html