Ich frage mich, warum dies ist ein Syntax in Python 3.4:Syntax mit ** kwargs vorbei und Hinter Komma
some_function(
filename = "foobar.c",
**kwargs,
)
Es funktioniert, wenn das folgende Komma nach **kwargs
entfernen.
Ich frage mich, warum dies ist ein Syntax in Python 3.4:Syntax mit ** kwargs vorbei und Hinter Komma
some_function(
filename = "foobar.c",
**kwargs,
)
Es funktioniert, wenn das folgende Komma nach **kwargs
entfernen.
Wie von vaultah (der aus irgendeinem Grund keine Mühe machte, eine Antwort zu posten) aufgezeigt wurde, war dies reported on the issue tracker und wurde seitdem geändert. Die Syntax wird ab Python 3.6 funktionieren.
explizit sein, ja, ich will nachlauf auch nach
*args
oder**kwds
ermöglichen Komma. Und das tut der Patch. - Guido van Rossum
Der Grund ist es ursprünglich nicht anerkannt wurde, weil **kwargs
der letzte erlaubte Artikel in einer Argumentliste war - nichts, nachdem es kommen könnte; aber eine ,
sieht aus, als könnte es mehr folgen.
Das hat sich geändert, so dass wir jetzt mit mehreren Stichwort dicts anrufen:
some_func(a, b, **c, **d,)
Aus Gründen der Einheitlichkeit willen, Hinter Kommas nun in beiden Definitionen und callings von Funktionen unterstützt werden. Dies ist sehr nützlich, wenn entweder mehrere Argumente oder einige lange Argumente vorliegen und die logische Zeile daher auf mehrere physische Zeilen aufgeteilt ist.
Die nachgestellten Kommata sind an beiden Stellen optional.
Danke. Ich bin neugierig auf den '** c, ** d' Teil. Wie würde Python wissen, welche Schlüsselwortargumente in 'c' und welche in' d' eingefügt werden sollen? –
@NiklasR: Sorry, hatte diesen Teil falsch, aktualisierte Antwort. –
http://bugs.python.org/issue9232 – vaultah