ich durch das Komma in einer Funktion Parameterliste bin ratlos:Python: Hinter Komma nach einem catch-all Argumente
def f(*args,): pass
verdient mir eine SyntaxError
Ausnahme. In Python 3, selbst das:
def f(*, arg = 1,): pass
löst eine Ausnahme Syntaxfehler. Beide zeigen auf die geschlossene Klammer.
Entfernen Sie das abschließende Komma, alles ist ruhig. Ich kratze meinen Kopf auf https://docs.python.org/3/reference/compound_stmts.html#function-definitions aber es ist irgendwie jenseits von mir (und möglicherweise auch falsch ... zumindest, in meinem Browser-Rendering kann ich nicht die letzte schließende Klammer in der parameter_list
Definition paaren). Mache ich etwas falsch? Ich bin die
def f(*,
a: "doc A" = 1,
b: "doc B" = 2,
c: "doc C" = 3,
d: "doc D" = 4,
# ... and maybe more,
)
Art von Person, und diese Frage Art-of ärgert mich (vielleicht, dass der falsche Teil ist, und ich soll die , a: "doc A" = 1
Art von Person werden - aber es sieht mir komisch).
Verwenden von Python wie in Gentoo Ebuilds dev-lang/Python 2.7.12 und 3.5.2 (von http://www.python.org) verteilt.
Warum wollen Sie ein Komma am Ende, wenn Sie keine funktionalen Argumente mehr haben? –
@be_good_do_good: Das nachgestellte Komma erleichtert es, die Argumente neu anzuordnen oder neue hinzuzufügen. Es geht um die Bearbeitung von Komfort und Wartungsfreundlichkeit. Hinsichtlich der Funktionalität gibt es natürlich keinen Unterschied. – Hamlet
@be_good_do_good: Für Konsistenz und kleinere Version Diffs beim Hinzufügen/Entfernen/Umordnen von Zeilen. Sie werden von vielen Style Guides unterstützt, einschließlich PEP8, wenn ich mich richtig erinnere. – bluenote10