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ß)?
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% 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 namenstypename
zurück. Die neue Unterklasse wird verwendet, umtuple
-ä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 einemname=value
-Format auflistet.
Es gibt keinen Verstoß gegen PEP 8; Token
ist eine benutzerdefinierte Klasse und ihr Name wird groß geschrieben, wie es sollte.
Tags und Links python python-3.x naming-conventions pep8 namedtuple