我使用python3.3并发现它在一些CPython函数中接受关键字参数:
>>> "I like python!".split(maxsplit=1)
['I', 'like python!']但是其他一些函数不接受关键字参数:
>>> sum([1,2,3,4], start = 10)
Traceback (most recent call last):
File "<pyshell#58>", line 1, in <module>
sum([1,2,3,4], start = 10)
TypeError: sum() takes no keyword arguments我的问题是:这些功能之间有什么区别?CPython中哪些函数接受关键字参数,哪些函数不接受?当然-为什么?
发布于 2012-11-04 08:11:59
使用CPython函数解析其参数的ParseTuple()不支持关键字参数(主要是因为PyArg_ParseTuple()只支持位置参数,例如简单的序列)。
这在CPython implementation details 这里中有解释。
CPython实现细节:实现可以提供内置函数,其位置参数不具有名称,即使它们是为文档目的“命名”的,因此不能由关键字提供。在CPython中,使用
PyArg_ParseTuple()解析参数的C语言实现的函数就是这种情况。
https://stackoverflow.com/questions/13217056
复制相似问题