7
我使用python3.3和剛剛發現它接受關鍵字參數在其CPython的功能有些:Python在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中的哪些函數接受關鍵字參數,哪些函數不參與?當然 - 爲什麼?
嗯,但在python3.2中,你不能在'str.split'中插入關鍵字參數 - 這是否意味着它們改變了函數的實現? – slallum
@slallum,我沒有3.3版的CPython來確認它,但它確實看起來像3.3中'split()'的實現不再使用'PyArg_ParseTuple()'。 –
@slallum:是的,實施改變了。 [3.3 str.split接受關鍵字](http://hg.python.org/cpython/file/9371bf2287c4/Objects/unicodeobject.c#l12197)(它使用'PyArg_ParseTupleAndKeywords()'),但[3.2不] (http://hg.python.org/cpython/file/3.2/Objects/unicodeobject.c#l8691) – jfs