Was ist die syntax-Regel für die abschließende Kommas im Tupel Definitionen?
In dem Fall von einem einzigen element-Tupel, das nachgestellte Komma ist erforderlich.
a = ('foo',)
Was ist ein Tupel mit mehreren Elementen? Es scheint, als ob das nachgestellte Komma vorhanden ist oder nicht, Sie sind beide gültig. Ist das richtig? Mit einem abschließenden Komma ist einfacher für die Bearbeitung meiner Meinung nach. Ist das eine schlechte coding-Stil?
a = ('foo1', 'foo2')
b = ('foo1', 'foo2',)
Hier ist die syntax-Regel: docs.python.org/reference/expressions.html#expression-lists
InformationsquelleAutor Stan | 2011-11-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
In allen Fällen, außer dem leeren Tupel, das Komma ist wichtig. Klammern sind nur erforderlich, wenn dies für andere syntaktische Gründe: zu unterscheiden sind ein Tupel aus einer Menge von Funktionsargumente, operator-Vorrang, oder Zeilenumbrüche.
Das nachgestellte Komma für Tupel, Listen oder Funktion Argumente ist guter Stil, vor allem, wenn Sie haben eine lange Initialisierung, aufgeteilt über mehrere Zeilen. Wenn Sie immer eine nachgestellte Komma, dann werden Sie nicht fügen Sie eine weitere Zeile an das Ende erwartet, zum hinzufügen von einem anderen element, und stattdessen nur die Erstellung einer gültigen Ausdruck:
Unter der Annahme, dass begann als eine 2-element-Liste, wurde später erweitert und es schief gegangen ist, in einem vielleicht nicht sofort offensichtliche Art und Weise. Immer auch das nachgestellte Komma und vermeiden Sie diese Falle.
Ja aber, Sie sollten nie zu konstruieren JSON von hand, so dass spielt keine Rolle, und für Javascript verwenden Sie immer jslint oder gleichwertig zu fangen, die Art von Fehler, bevor es in der Nähe einen browser.
InformationsquelleAutor Duncan
Ist es nur erforderlich, für Einzel-item Tupel eindeutig machen Definition ein Tupel oder einen Ausdruck umgeben von Klammern.
Für mehr als ein Element, ist es nicht mehr nötig, da ist es vollkommen klar, es ist ein Tupel. Allerdings, das nachgestellte Komma ist erlaubt, um die Definition über mehrere Zeilen einfacher. Man könnte hinzufügen, um das Ende oder die Elemente neu anordnen, ohne die syntax, da Sie Links ein Komma auf dem Unfall.
z.B.,
Beachten Sie, dass dies gilt auch für andere Sammlungen (z.B., Listen und Wörterbücher) zu und nicht nur-Tupeln.
key: value,
pro Zeile, und nicht Komma, wenn Sie neue Sachen.InformationsquelleAutor Jeff Mercado
Ein weiterer Vorteil des nachgestellten Kommas ist, dass es macht diffs schöner Aussehen. Wenn Sie begann mit
verändert und es zu
Diff Aussehen würde
In der Erwägung, dass, wenn Sie begonnen hatte, mit einem abschließenden Komma, wie
Dann das diff wäre nur
InformationsquelleAutor asmeurer
Es ist optional: siehe Python wiki.
Zusammenfassung: einelementige Tupel brauchen eine nachgestellte Komma, aber es ist optional für multiple-element-Tupel.
InformationsquelleAutor Dave Everitt
Bedenken Sie außerdem, die situation, wo Sie wollen:
So, in diesem Fall die äußeren Klammern sind nichts anderes als die Gruppierung mit Klammern.
Um diese Tupel müssen Sie eine nachgestellte Komma. also
InformationsquelleAutor MaPy
Nachgestellte Komma ist erforderlich für die ein-element-Tupel nur. Mit einem abschließenden Komma für größere Tupel ist eine Frage des Stils und ist nicht erforderlich. Seine größte Vorteil ist die saubere diff auf Dateien mit multi-line-große Tupel, die Häufig modifiziert werden (z.B. Konfiguration Tupel).
InformationsquelleAutor Adam Zalcman
Das ist eine einfache Antwort.
a = ("s") ist eine Zeichenfolge, die
und
a = ("s") ist ein Tupel mit einem element.
Python benötigt ein zusätzliches Komma im Falle einer element-Tupel auf, die Unterscheidung zwischen Strings und Tupel.
Zum Beispiel versuchen, diese auf python-Konsole:
a = ("s")
a = a + (1,2,3)
Traceback (most recent call last):
Datei "stdin", line 1, in-Modul
TypeError: cannot concatenate 'str' und 'Tupel' Objekte
InformationsquelleAutor rajni kant
Einen anderen Grund, dass dieser existiert, ist, dass es macht die code-Generierung und
__repr__
Funktionen einfacher zu schreiben. Zum Beispiel, wenn Sie einige Objekt, das gebaut ist wieobj(arg1, arg2, ..., argn)
, dann kann man nur schreibenobj.__repr__
alsWenn eine nachgestellte Komma war nicht erlaubt, hätte Sie speziellen Fall ist das Letzte argument. In der Tat, könnten Sie schreiben, der oben in eine Linie mit Hilfe einer list comprehension (ich habe es geschrieben, aus länger, um es einfacher zu Lesen). Wäre es nicht so einfach zu tun, wenn Sie hatte zu besonderen Fall der letzten Legislaturperiode.
join
in diesem Fall:def __repr__(self): 'obj(' + ', '.join([repr(arg) for arg in obj.args]) + ')'
.Es hilft auch bei der code-Generierung, auch von tools, die nicht in Python geschrieben und nicht die netten Funktionen wie
join
.InformationsquelleAutor asmeurer
PEP 8 -- Style Guide for Python Code - Wann Trailing Kommas
Trailing Kommas sind in der Regel optional, außer Sie sind zwingend, wenn ein Tupel aus einem element (und in Python 2 haben Sie die Semantik für die print-Anweisung). Für Klarheit, es ist empfohlen zu umgeben, die letztere in (technisch redundant) Klammern.
Ja:
OK, aber verwirrend:
Wenn trailing Kommas sind überflüssig, Sie sind oft hilfreich, wenn ein versions-Kontroll-system wird verwendet, wenn eine Liste von Werten, Argumenten oder importierten Elemente wird erwartet, dass im Laufe der Zeit erweitert. Das Muster ist, jedem Wert (etc.) auf einer Linie von selbst, immer zusätzlich eine nachgestellte Komma, und fügen Sie die schließende Klammer/Klammer/Klammer auf die nächste Zeile. Allerdings ist es nicht sinnvoll, eine nachgestellte Komma auf die gleiche Zeile wie die schließende Trennzeichen (außer im oben genannten Fall der singleton-Tupel).
Ja:
No:
InformationsquelleAutor Uri
Coding style ist Ihr Geschmack, Wenn Sie denken, coding standard Fragen gibt es eine PEP-8 , kann guide Sie.
Was haltet Ihr von dem Ergebnis des folgenden Ausdrucks?
Jau, x ist nur eine Zahl.
InformationsquelleAutor Melug