为什么我不能在范围函数上使用关键字参数?

Gar*_*ary 3 python

在python文档中,它说:

任何函数参数,无论是非可选的还是可选的(具有默认值)都可以作为关键字参数调用,只要其中一个参数名称匹配即可.但是,关键字参数必须遵循所有位置参数.

我试过这个:

kwargs = {'step':-1, 'start':10, 'stop':5}
list(range(**kwargs))
Run Code Online (Sandbox Code Playgroud)

但是python给了男人一个错误:

TypeError: range() takes no keyword arguments
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

Mar*_*ers 12

range()不是python函数.它是C型; C类型遵循不同的参数规则,range()只接受位置参数.

请参阅Calls表达式文档:

CPython实现细节:实现可能提供内置函数,其位置参数没有名称,即使它们为了文档的目的而"命名",因此不能通过关键字提供.在CPython中,这是用于在C中实现的PyArg_ParseTuple()用于解析其参数的函数的情况.

range()未命名的位置参数因此不能用作关键字参数.