Was ist die Namenskonvention in Python für Variablen- und Funktionsnamen?

Von einem C # -Hintergrund kommen die Namenskonvention für Variablen und Methodennamen in der Regel entweder CamelCase oder Pascal Case:

// C# example string thisIsMyVariable = "a" public void ThisIsMyMethod() 

In Python habe ich das oben gesehen, aber ich habe auch Unterstriche gesehen:

 # python example this_is_my_variable = 'a' def this_is_my_function(): 

Gibt es eine bevorzugtere, definitive Codierung Stil für Python?

  • Übergeben aller Argumente einer Funktion an eine andere Funktion
  • Python, der eine Ganzzahl durch Verweis übergibt
  • Wie kann ich aufhören, Python-Funktionen beim Codieren zu überschreiben?
  • "Auspacken" ein übergebenes Wörterbuch in den Namensraum der Funktion in Python?
  • NameErrors und Funktionen in Python
  • Python, dynamisch implementieren eine Klasse onthefly
  • 12 Solutions collect form web for “Was ist die Namenskonvention in Python für Variablen- und Funktionsnamen?”

    Siehe Python PEP 8 .

    Funktionsnamen sollten Kleinbuchstaben sein, wobei Wörter durch Unterstriche getrennt sind, um die Lesbarkeit zu verbessern.

    MixedCase ist nur in Kontexten erlaubt, wo das schon der vorherrschende Stil ist

    Variablen…

    Verwenden Sie die Funktion Namensregeln: Kleinbuchstaben mit Worten, die durch Unterstriche getrennt sind, um die Lesbarkeit zu verbessern.

    Persönlich mixedCase ich davon ab, weil ich auch mixedCase über lower_case für meine eigenen Projekte bevorzuge.

    Google Python Style Guide hat folgende Konvention:

    Module_name, package_name, ClassName, method_name, ExceptionName, function_name, GLOBAL_CONSTANT_NAME, global_var_name, instance_var_name, function_parameter_name, local_var_name

    David Goodger (in "Code Like a 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 sich an bereits bestehende Konventionen anzupassen

    Es gibt PEP 8 , wie andere Antworten zeigen, aber PEP 8 ist nur der Styleguide für die Standardbibliothek, und es wird nur als Evangelium darin aufgenommen. Eine der häufigsten Abweichungen von PEP 8 für andere Stücke von Code ist die variable Namensgebung, speziell für Methoden. Es gibt keine einzige vorherrschende Art, obwohl unter Berücksichtigung der Menge an Code, die mixedCase verwendet, wenn man eine strenge Volkszählung würde man wahrscheinlich am Ende mit einer Version von PEP 8 mit mixedCase. Es gibt wenig andere Abweichung von PEP 8 das ist ganz so häufig.

    Wie der Style Guide für Python Code zugibt,

    Die Namenskonventionen der Python-Bibliothek sind ein bisschen ein Chaos, also werden wir das niemals ganz konsequent bekommen

    Beachten Sie, dass dies nur auf Pythons Standardbibliothek verweist. Wenn sie das nicht konsistent bekommen können, dann gibt es kaum eine Hoffnung, eine allgemein-adhärierte Konvention für alle Python-Code zu haben, gibt es?

    Von diesem und der Diskussion hierher würde ich folgern, dass es keine schreckliche Sünde ist, wenn man bei der Überquerung von Python zB Java oder C # (klare und gut etablierte) Namenskonventionen für Variablen und Funktionen verwendet. Denken Sie daran, natürlich, dass es am besten ist, mit dem zu bleiben, was der vorherrschende Stil für eine Codebase / Projekt / Team passiert zu sein. Wie der Python Style Guide hervorhebt, ist die innere Konsistenz am meisten wichtig.

    Fühlen Sie sich frei, mich als Ketzer zu entlassen. 🙂 Wie das OP, ich bin kein "Pythonista", noch nicht.

    Wie bereits erwähnt, sagt PEP 8 die Verwendung von lower_case_with_underscores für Variablen, Methoden und Funktionen.

    Ich bevorzuge die Verwendung von lower_case_with_underscores für Variablen und mixedCase für Methoden und Funktionen macht den Code expliziter und lesbarer. So folgt dem Zen von Pythons "explizit ist besser als implizit" und "Lesbarkeit zählt"

    Ich persönlich versuche, CamelCase für Klassen, mixedCase Methoden und Funktionen zu verwenden. Variablen sind meist unterstrichen (wenn ich mich erinnern kann). Auf diese Weise kann ich auf einen Blick sagen, was genau ich anrufe, anstatt alles gleich auszusehen.

    Die meisten Python-Leute bevorzugen Unterstriche, aber auch ich benutze Python seit mehr als 5 Jahren im Moment, ich mag sie immer noch nicht. Sie sehen einfach hässlich zu mir, aber vielleicht ist das alles Java in meinem Kopf.

    Ich mag einfach CamelCase besser, da es besser mit dem Weg Klassen benannt ist, fühlt es sich logischer, SomeClass.doSomething() als SomeClass.do_something() . Wenn man sich im globalen Modulindex in Python umschaut, findet man beide, was auf die Tatsache zurückzuführen ist, dass es sich um eine Sammlung von Bibliotheken aus verschiedenen Quellen handelt, die Überstunden und nicht etwas, das von einem Unternehmen wie Sun mit strengen Codierungsregeln entwickelt wurde, . Ich würde sagen, das Endergebnis ist: Verwenden Sie, was Sie besser wollen, es ist nur eine Frage des persönlichen Geschmacks.

    Normalerweise folgen Sie den Konventionen, die in der Standardbibliothek der Sprache verwendet werden.

    Es gibt eine Zeitung darüber: http://www.cs.kent.edu/~jmaletic/papers/ICPC2010-CamelCaseUnderScoreClouds.pdf

    Wenn du faul bist, es zu lesen, heißt es, dass snake_case besser lesbar ist als camelCase. Das ist, warum moderne Sprachen verwenden (oder verwenden) Schlange, wo immer sie können.

    Der Codierungsstil ist in der Regel Teil der internen Richtlinien- / Kongressstandards einer Organisation, aber ich denke im Allgemeinen, der all_lower_case_underscore_separator Stil (auch als snake_case bezeichnet) ist am häufigsten in Python.

    Ich habe das PEP-System ein wenig verändert.

     ThisIsAClass this_is_a_function 

    Für Variablen verwende ich jedoch ein System, das ein bisschen gegen die dynamische Typisierung von Python geht, aber ich finde die verbesserte Lesbarkeit auf einen Blick so sehr nützlich, und die meisten Variablen ändern sich niemals in jedem Fall. Ich beginne jede Variable mit einem kleinen Buchstaben, was bedeutet, was es ist, gefolgt von StudlyCaps. Ein weiterer Vorteil ist, dass Variablen und Funktionen nicht gleich aussehen. Beispielsweise:

     i_integer_variable r_real_number o_object f_file l_list d_dictionary s_string x_Dynamic_variable a_numpy_array etc.. 
    Python ist die beste Programmiersprache der Welt.