Variablennamen folgen der gleichen Konvention wie Funktionsnamen.
gemischter Fall ist nur in Kontexten erlaubt, in denen dies bereits der vorherrschende Stil ist (z threading.py), um die Abwärtskompatibilität zu erhalten.
PEP = Python-Verbesserungsvorschlag.
– Peter Mortensen
31. Juli 2009 um 21:18 Uhr
@RickyRobinson Welchen hirntoten Code-Editor verwenden Sie, der nicht weiß, dass der Unterstrich ein Wort fortsetzt? Viele kostenlose, die das tun. Ich verwende Notepad++, wenn keine IDE verfügbar ist. Dafür können Sie eine Vorlage für die Python-Bearbeitung herunterladen. (Andere können noch nützlichere kostenlose Downloads empfehlen.)
– WerkzeugmacherSteve
16. Dezember 2013 um 20:34 Uhr
Ein Argument für den unterstrichenen Stil ist, dass Sie besser Ein-Buchstaben-Wörter verwenden können. Für (ein ziemlich dummes) Beispiel, findMeAClass ist vielleicht hässlicher als find_me_a_class.
– Heltonbiker
28. Juni 2014 um 21:16 Uhr
Ich finde, dass die Konvention von Variablennamen nur in Kleinbuchstaben für das wissenschaftliche Rechnen nicht geeignet ist, wo man oft auf bekannte Konstanten, Tensoren usw. stößt, die mit Großbuchstaben bezeichnet werden.
– andreasdr
17. Oktober 2014 um 20:00 Uhr
@rr PEP8 ist ein “Style Guide” und beschreibt sich selbst als Konvention, NICHT als Standard. Es erklärt auch klar die Gründe dafür, dass diese “Regeln” nicht immer befolgt werden.
Ein ähnliches Namensschema sollte auf a angewendet werden CLASS_CONSTANT_NAME
a) Ich liebe Beispiele – danke. b) Unattraktive Mischung aus CamelCase und Unterstrichen? Aber: Ich bin neu bei Python und seinem flexibleren Datenmodell und wette, dass hinter Googles Leitfaden solide Gedanken stehen …
– Matthäus Cornell
10. September 2012 um 14:29 Uhr
@MatthewCornell Mischen ist nicht schlecht, solange Sie sich daran halten. Es erleichtert tatsächlich die Lesbarkeit, wenn Sie wissen, dass Funktionen Unterstriche haben und Klassen nicht.
– Pithikos
28. September 2014 um 9:53 Uhr
@MatthewCornell Ich würde nicht annehmen, dass es etwas mit Python zu tun hat. Go erzwingt tatsächlich willkürliche Schönheitsstandards und kann nicht kompiliert werden, wenn Sie sich beispielsweise nicht an die Konvention der geschweiften Klammern halten. Im Grunde ist es ein Würfelwurf, ob jemand wirklich sorgfältig nachgedacht hat oder einfach nur wirklich geliebt hat, wie er Dinge tut.
– Partherschuss
15. Juni 2015 um 21:14 Uhr
Würden Sie ein konstantes statisches Attribut als GLOBAL_CONSTANT_NAME betrachten? Es ist nicht genau global, da es im Rahmen der Klasse liegt.
– Jakob T.
23. Januar 2018 um 22:19 Uhr
geht dann rein property … vielleicht liegt es eher daran, was der Gegenstand zu sein vorgibt, als daran, was er tatsächlich ist
– joel
8. Oktober 2019 um 19:32 Uhr
unmontiert
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 oder ALL_CAPS für Konstanten
StudlyCaps für Klassen
camelCase nur um bestehenden Konventionen zu entsprechen
+1 visuelle Beispiele. Obwohl ich nicht sehen konnte, wo PEP8 vorschlägt joined_lower zum Konstanten, nur “alle Großbuchstaben mit Unterstrichen, die Wörter trennen”. Neugierig auch auf die neue Enum-Funktion.
– Bob Stein
19. Januar 2015 um 13:11 Uhr
StudlyCaps for classes ist eine großartige universelle Regel für den Unterricht in fast allen Sprachen. Warum sind dann einige in Python eingebaute Klassen (wie z datetime.datetime hält sich nicht an diese Konvention?
– Prahlad Yeri
12. Januar 2017 um 10:52 Uhr
@ PrahladYeri: Leider unittest.TestCase.assertEqual und Freunde halten sich auch nicht an die Snake_Case-Konvention. Die Wahrheit ist, dass Teile der Python-Standardbibliothek entwickelt wurden, bevor sich die Konventionen verfestigt hatten, und wir hängen jetzt an ihnen fest.
– Waschen
18. März 2017 um 14:29 Uhr
CamelCase ist verwirrend, weil einige Leute sagen, es sei „camelCase“ (auch bekannt als „mixedCase“) und andere sagen, es sei „CamelCase“ (auch bekannt als „StudlyCaps“). Beispielsweise erwähnt der PEP “CamelCase”, während Sie “camelCase” erwähnen.
Die Namenskonventionen der Python-Bibliothek sind ein bisschen chaotisch, also werden wir das nie ganz konsistent bekommen
Beachten Sie, dass sich dies nur auf Pythons bezieht Standardbibliothek. Wenn sie nicht kommen können das konsistent, dann besteht kaum Hoffnung auf eine allgemeingültige Konvention für alle Python-Code, gibt es?
Daraus und aus der Diskussion hier würde ich schließen, dass es so ist nicht eine schreckliche Sünde, wenn man beim Übergang zu Python weiterhin die (eindeutigen und etablierten) Namenskonventionen von Java oder C# für Variablen und Funktionen verwendet. Denken Sie natürlich daran, dass es am besten ist, sich an den vorherrschenden Stil für eine Codebasis / ein Projekt / ein Team zu halten. Wie der Python Style Guide betont, innere Konsistenz zählt am meisten.
Fühlen Sie sich frei, mich als Ketzer abzutun. 🙂 Wie das OP bin ich kein “Pythonista”, jedenfalls noch nicht.
Wie bereits erwähnt, sagt PEP 8 zu verwenden lower_case_with_underscores für Variablen, Methoden und Funktionen.
Ich benutze lieber lower_case_with_underscores für Variablen u mixedCase für Methoden und Funktionen macht den Code expliziter und lesbarer. So nach dem Zen von Pythons „explizit ist besser als implizit“ und „Lesbarkeit zählt“
+1 Ich tausche diese beiden aus (ich verwende mixedCase für Variablen), aber wenn alles so deutlicher ist, wird sofort klar, womit Sie es zu tun haben, zumal Sie Funktionen weitergeben können.
– Xiong Tschamiow
12. Juli 2009 um 17:51 Uhr
Obwohl “Lesbarkeit” sehr subjektiv ist. Ich finde Methoden mit Unterstrich lesbarer.
– Pithikos
30. September 2014 um 15:24 Uhr
Ihre Präferenz war meine anfängliche Intuition, die aus vielen Jahren der Java-Entwicklung stammt. Ich verwende _ gerne für Variablen, aber für mich sieht es für Funktionen und Methoden etwas komisch aus.
– Michael Szczepaniak
13. Juli 2016 um 22:24 Uhr
Thomas Wouters
Es gibt PEP 8, wie andere Antworten zeigen, aber PEP 8 ist nur der Styleguide für die Standardbibliothek und wird darin nur als Evangelium angesehen. Eine der häufigsten Abweichungen von PEP 8 für andere Codeteile ist die Variablenbenennung, speziell für Methoden. Es gibt keinen einzigen vorherrschenden Stil, obwohl man in Anbetracht der Menge an Code, der mixedCase verwendet, bei einer strengen Zählung wahrscheinlich mit einer Version von PEP 8 mit mixedCase enden würde. Es gibt kaum eine andere Abweichung von PEP 8, die so häufig vorkommt.
+1 Ich tausche diese beiden aus (ich verwende mixedCase für Variablen), aber wenn alles so deutlicher ist, wird sofort klar, womit Sie es zu tun haben, zumal Sie Funktionen weitergeben können.
– Xiong Tschamiow
12. Juli 2009 um 17:51 Uhr
Obwohl “Lesbarkeit” sehr subjektiv ist. Ich finde Methoden mit Unterstrich lesbarer.
– Pithikos
30. September 2014 um 15:24 Uhr
Ihre Präferenz war meine anfängliche Intuition, die aus vielen Jahren der Java-Entwicklung stammt. Ich verwende _ gerne für Variablen, aber für mich sieht es für Funktionen und Methoden etwas komisch aus.
– Michael Szczepaniak
13. Juli 2016 um 22:24 Uhr
weiter zu dem, was @JohnTESlade geantwortet hat. Python-Styleguide von Google hat einige ziemlich nette Empfehlungen,
Zu vermeidende Namen
Einzelzeichennamen mit Ausnahme von Zählern oder Iteratoren
Bindestriche (-) in jedem Paket-/Modulnamen
\__double_leading_and_trailing_underscore__ names (reserviert von Python)
Namenskonvention
“Intern” bedeutet intern für ein Modul oder geschützt oder privat innerhalb einer Klasse.
Das Voranstellen eines einzelnen Unterstrichs (_) bietet eine gewisse Unterstützung für den Schutz von Modulvariablen und -funktionen (nicht in import * from enthalten). Das Voranstellen eines doppelten Unterstrichs (__) an eine Instanzvariable oder -methode dient effektiv dazu, die Variable oder Methode für ihre Klasse privat zu machen (unter Verwendung von Namensverfälschung).
Platzieren Sie zusammengehörige Klassen und Top-Level-Funktionen in einem Modul. Anders als bei Java müssen Sie sich nicht auf eine Klasse pro Modul beschränken.
Verwenden CapWords für Klassennamen, aber lower_with_under.py für Modulnamen. Obwohl es viele vorhandene Module gibt, die benannt werden CapWords.py, davon wird jetzt abgeraten, da es verwirrend ist, wenn das Modul zufällig nach einer Klasse benannt wird. (“Warte – habe ich geschrieben import StringIO oder from StringIO import StringIO?”)
Leitlinien abgeleitet von Guidos Empfehlungen
11448000cookie-checkWas ist die Namenskonvention in Python für Variable und Funktion?yes