Python-Namenskonvention - namedtuples

8

Ich bin neu bei Python und habe sowohl die Online-Dokumentation gelesen als auch versucht, PEP 0008 zu folgen um einen guten Python-Codestil zu erhalten. Ich bin neugierig auf das Code-Segment, das ich während des Studiums in den offiziellen Dokumenten von Python gefunden habe über die re-Bibliothek:

%Vor%

Ich kann nicht verstehen, warum die Variable Token mit einem ersten Großbuchstaben benannt ist. Ich habe die PEP 0008 durchgelesen und es gibt keinen Hinweis darauf, was ich gesehen habe. Sollte es nicht token stattdessen sein oder TOKEN wenn es eine Konstante wäre (was ich nicht weiß)?

    
Karim 02.04.2016, 08:33
quelle

2 Antworten

9

In dem von Ihnen angegebenen Code-Segment ist Token ein benanntes Tupel , definitiv keine Konstante. Es folgt nicht anderen Benennungsstilen für Variablennamen, um die Tatsache hervorzuheben, dass es sich um eine Klassen-Factory-Funktion handelt. Von einem PEP 0008 Style Checker (wie zB PyCharm ) wird keine Warnung ausgegeben, wenn Sie es als token schreiben, aber ich denke es ist keine gute Übung, da es so ist unterscheidet es nicht als Klassenfabrikname.

Also nameduples fallen unter die Klassennamen in PEP 0008. Schade wird nicht explizit gesagt. Neben dem Beispiel, das Sie für zum Schreiben eines Tokenizers erwähnt haben, ist dies auch in zu sehen die Beispiele collections.namedtuple docs :

%Vor%     
Yannis 02.04.2016, 08:43
quelle
8

Der Schlüssel hier ist collections.namedtuple . Wie die Dokumentation sagt,

  

collections.namedtuple(typename, field_names, verbose=False, rename=False)

     

Gibt eine neue tuple Unterklasse namens typename zurück. Die neue Unterklasse wird verwendet, um tuple -ähnliche Objekte zu erstellen, die über Felder verfügen, auf die durch Attributsuche zugegriffen werden kann, und die indexierbar und iterierbar sind. Instanzen der Unterklasse haben auch einen hilfreichen Docstring (mit typename und field_names) und eine hilfreiche __repr__() -Methode, die den Tupelinhalt in einem name=value -Format auflistet.

Es gibt keinen Verstoß gegen PEP 8; Token ist eine benutzerdefinierte Klasse und ihr Name wird groß geschrieben, wie es sollte.

    
Antti Haapala 02.04.2016 08:40
quelle