作者:mobiledu2502925163 | 来源:互联网 | 2023-05-18 20:57
在python文档中,它说:
任何函数参数,无论是非可选的还是可选的(具有默认值)都可以作为关键字参数调用,只要其中一个参数名称匹配即可.但是,关键字参数必须遵循所有位置参数.
我试过这个:
kwargs = {'step':-1, 'start':10, 'stop':5}
list(range(**kwargs))
但是python给了男人一个错误:
TypeError: range() takes no keyword arguments
为什么是这样?
1> Martijn Piet..:
range()
不是python函数.它是C型; C类型遵循不同的参数规则,range()
只接受位置参数.
请参阅Calls表达式文档:
CPython实现细节:实现可能提供内置函数,其位置参数没有名称,即使它们为了文档的目的而"命名",因此不能通过关键字提供.在CPython中,这是用于在C中实现的PyArg_ParseTuple()
用于解析其参数的函数的情况.
range()
未命名的位置参数因此不能用作关键字参数.