Was ist die Namenskonvention in Python für Variablen- und Funktionsnamen?
-
03-07-2019 - |
Frage
Ich stammt aus einem C # Hintergrund die Namenskonvention für Variablen und Methodennamen sind in der Regel entweder oder Pascal Camelcase-Fall:
// C# example
string thisIsMyVariable = "a"
public void ThisIsMyMethod()
In Python, ich habe die oben gesehen, aber ich habe auch Unterstrichen verwendet gesehen werden:
# python example
this_is_my_variable = 'a'
def this_is_my_function():
Gibt es eine bevorzugte endgültige Codierstil für Python?
Lösung
Siehe Python PEP 8 .
Funktionsnamen sein Klein sollte, mit Unterstrichen durch getrennte Wörter als notwendig Lesbarkeit zu verbessern.
mixedcase ist nur in einem Kontext erlaubt wo das ist bereits die vorherrschende Stil
Variablen ...
Mit der Funktion Regeln Benennung: Kleinbuchstaben mit getrennten Worte unterstreicht, wie notwendig zur Verbesserung der Lesbarkeit.
Persönlich abweichen, ich das, weil ich mixedCase
über lower_case
für meine eigenen Projekte auch vorziehen.
Andere Tipps
Google Python Style Guide die folgende Konvention hat:
module_name, package_name, Klassenname, method_name, exception, function_name, GLOBAL_CONSTANT_NAME, global_var_name, instance_var_name, function_parameter_name, local_var_name
Ein ähnliches Benennungsschema sollte auf eine CLASS_CONSTANT_NAME
angewendet werden
David Goodger (in "Code wie ein Pythonista" hier ) beschreibt die PEP 8 Empfehlungen wie folgt:
-
joined_lower
für Funktionen, Methoden, Attribute, Variablen -
joined_lower
oderALL_CAPS
für Konstanten -
StudlyCaps
für Klassen -
camelCase
nur entsprechen vorbestehenden Konventionen
Wie der Style Guide für Python-Code zugibt,
Die Namenskonventionen von Python Bibliothek sind ein bisschen ein Durcheinander, so dass wir nie bekommen vollständig konsistent
Beachten Sie, dass dies nur auf Python bezeichnet Standardbibliothek . Wenn sie nicht bekommen , die im Einklang, dann kaum gibt es viel Hoffnung eine der mit in der Regel haft-to-Konvention für alle Python-Code, oder?
Von diesem, und die Diskussion hier, würde ich folgern, dass es nicht eine schreckliche Sünde, wenn man unter Verwendung hält z.B. Java oder C # 's (klar und gut etablierte) Konventionen für Variablen und Funktionen zu benennen, wenn sie Python überqueren. Wenn man bedenkt, natürlich, dass es am besten ist, mit dem, was der vorherrschenden Stil für ein Code-Basis / Projekt / Team zu halten passiert zu sein. Da der Python Style Guide weist darauf hin, interne Konsistenz die meisten Fragen.
Sie können mich als Ketzer entlassen. :-) Wie die OP, ich bin kein "Pythonista", jedenfalls noch nicht.
Es gibt PEP 8 , wie andere Antworten zeigen, aber PEP 8 ist nur der Styleguide für die Standard-Bibliothek, und es ist nur als Evangelium darin aufgenommen. Eine der häufigsten Abweichungen von PEP 8 für andere Teile des Codes ist die Variablennamen, die speziell für Methoden. Es gibt keine einzige vorherrschen Stil, obwohl das Volumen der Code unter Berücksichtigung, dass mixedcase verwendet, wenn man eine strikte Volkszählung machen waren wahrscheinlich mit einer Version von PEP 8 mit mixedcase enden würde. Es gibt wenig andere Abweichung von PEP 8, die ganz so üblich ist.
Wie bereits erwähnt, PEP 8 sagt lower_case_with_underscores
für Variablen, Methoden und Funktionen zu nutzen.
Ich ziehe mit lower_case_with_underscores
für Variablen und mixedCase
für Methoden und Funktionen macht den Code explizit und lesbar. So nach dem Zen of Python „explicit ist besser als implizit“ und „Readability zählt "
Persönlich versuche ich für die Klassen Camelcase, mixedcase Methoden und Funktionen zu nutzen. Variablen sind in der Regel unterstreichen separierten (wenn ich mich erinnern kann). Auf diese Weise kann ich auf einen Blick erkennen, was genau bin ich Aufruf, anstatt alles suchen, um die gleiche.
Die meisten Menschen bevorzugen Python Unterstrichen, aber selbst ich Python jetzt seit mehr als 5 Jahren verwende, ich sie noch nicht gefällt. Sie sehen nur hässlich zu mir, aber vielleicht ist das ganze Java in meinem Kopf.
ich einfach wie Camelcase besser, da es mit der Art und Weise besser paßt Klassen genannt werden, es fühlt sich mehr logischen SomeClass.doSomething()
als SomeClass.do_something()
zu haben. Wenn Sie in dem globalen Modul-Index in Python umschauen, finden Sie beides, was auf die Tatsache zurückzuführen ist, dass es eine Sammlung von Bibliotheken aus verschiedenen Quellen, die Überstunden wuchsen und nicht etwas, das von einem Unternehmen wie Sun mit strengen Codierungsregeln entwickelt wurde . Ich würde sagen, das Endergebnis ist. Verwenden Sie, was Ihnen besser gefällt, es ist nur eine Frage des persönlichen Geschmacks
weiter zu dem, was @JohnTESlade hat geantwortet. Googles Python Style Guide einige recht ordentlich Empfehlungen hat,
Namen zu vermeiden
- einzelne Zeichennamen außer für Zähler oder Iteratoren
- Striche (-) in jedem Paket / Modulnamen
-
\__double_leading_and_trailing_underscore__ names
(reserviert von Python)
Naming Convention
- „Intern“ bedeutet intern auf ein Modul oder eine geschützte oder private innerhalb einer Klasse.
- einen einzigen Unterstrich Voranstellen (_) hat eine gewisse Unterstützung für den Schutz von Modul-Variablen und Funktionen (nicht mit dem Import im Preis enthalten * aus). Voranstellen einen Doppelstrich (__) zu einer Instanz Variable oder Methode dient effektiv die Variable oder Methode privat zu seiner Klasse zu machen (Namen Mangeln verwenden).
- Platz verwandte Klassen und Top-Level-Funktionen zusammen in einem Modul. Im Gegensatz zu Java, gibt es keine Notwendigkeit, sich auf eine Klasse pro Modul zu begrenzen.
- Verwenden Sie
CapWords
für Klassennamen, aberlower_with_under.py
für Modulnamen. Zwar gibt es viele bestehende Module genanntCapWords.py
sind, entmutigt wird dies jetzt, weil es verwirrend ist, wenn das Modul nach einer Klasse genannt werden passiert. ( "Warten - habe ich schreibeimport StringIO
oderfrom StringIO import StringIO
")
Es ist ein Papier dazu: http: // www .cs.kent.edu / ~ jmaletic / papers / ICPC2010-CamelCaseUnderScoreClouds.pdf
TL; DR Er sagt, dass snake_case besser lesbar als Camelcase ist. Deshalb moderne Sprachen (oder verwenden sollten) Schlange, wo immer sie können.
Die Codierung Stil ist in der Regel Teil einer internen Politik / Konvention Standards der Organisation, aber ich denke, im Allgemeinen, der all_lower_case_underscore_separator Stil (auch genannt snake_case) in Python am häufigsten ist.
Normalerweise folgt man den Konventionen in der Standardbibliothek Sprache.