używam python3.3 i właśnie dowiedziałem się, że przyjmuje argumentów słów kluczowych w niektóre jego funkcji CPython:Python akceptuje argumenty słów kluczowych w funkcjach CPython?
>>> "I like python!".split(maxsplit=1)
['I', 'like python!']
Ale niektóre inne funkcje nie akceptują argumenty słów kluczowych:
>>> 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
Moje pytanie brzmi: jaka jest różnica między tymi funkcjami? Które funkcje w CPython akceptują argumenty słów kluczowych, a które funkcje nie? I oczywiście - dlaczego?
Hmm, ale w python3.2 nie można wstawiać argumentów słów kluczowych do 'str.split' - czy to oznacza, że zmienili implementację funkcji? – slallum
@salallum, nie mam wersji 3.3 programu CPython, aby to potwierdzić, ale wygląda na to, że implementacja 'split()' w wersji 3.3 nie używa już 'PyArg_ParseTuple()'. –
@salallum: tak, implementacja uległa zmianie. [3.3 str.split akceptuje słowa kluczowe] (http://hg.python.org/cpython/file/9371bf2287c4/Objects/unicodeobject.c#l12197) (używa 'PyArg_ParseTupleAndKeywords()'), ale [3.2 nie] (http://hg.python.org/cpython/file/3.2/Objects/unicodeobject.c#l8691) – jfs