Question Quelle est la convention de nommage dans Python pour les noms de variables et de fonctions?


Venant d'un arrière-plan C #, la convention de dénomination des variables et des noms de méthodes est généralement soit CamelCase, soit Pascal Case:

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

En Python, j'ai vu ce qui précède mais j'ai aussi vu des underscores utilisés:

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

Existe-t-il un style de codage plus préférable et définitif pour Python?


552
2017-10-01 21:01


origine


Réponses:


Voir Python PEP 8.

Les noms de fonctions doivent être en minuscules,   avec des mots séparés par des traits de soulignement   nécessaire pour améliorer la lisibilité.

mixedCase est autorisé uniquement dans les contextes   où c'est déjà la règle   style

Variables ...

Utilisez les règles de dénomination de la fonction:   minuscules avec des mots séparés par   souligne au besoin pour améliorer   lisibilité.

Personnellement, je dévier de cela parce que je préfère aussi mixedCase plus de lower_case pour mes propres projets.


659
2017-10-01 21:05



Guide de style Google Python a la convention suivante:

nom_module, nom_package, nom_classe, nom_méthode, nom_exception,   nom_fonction, GLOBAL_CONSTANT_NAME, nom_var mondial,   nom_var_instance, nom_paramètre_fonction, nom_var_cale

Un schéma de nommage similaire devrait être appliqué à un CLASS_CONSTANT_NAME


495
2017-12-07 22:44



David Goodger (dans "Code Like a Pythonista" ici) décrit les recommandations du PEP 8 comme suit:

  • joined_lower pour les fonctions, les méthodes, attributs, variables

  • joined_lower ou ALL_CAPS pour constantes

  • StudlyCaps pour les cours

  • camelCase seulement pour se conformer à conventions préexistantes


194
2017-10-02 03:53



Comme le Guide de style pour le code Python admet,

Les conventions de nommage de Python   bibliothèque sont un peu un gâchis, alors nous allons   jamais obtenir cela complètement cohérent

Notez que cela ne concerne que Python bibliothèque standard. Si ils ne peuvent pas obtenir cette cohérente, alors il n'y a guère d'espoir d'avoir une convention généralement acceptée pour tout Code Python, est-il?

De cela, et la discussion ici, je déduirais que c'est ne pas un péché horrible si l'on continue à utiliser par ex. Conventions de nommage de Java ou de C # (claires et bien établies) pour les variables et les fonctions lors du passage à Python. Gardant à l'esprit, bien sûr, qu'il est préférable de respecter le style qui prévaut pour une base de code / projet / équipe se trouve être. Comme le souligne le Guide de Style Python, la cohérence interne compte le plus.

N'hésitez pas à me rejeter comme un hérétique. :-) Comme l'OP, je ne suis pas un "Pythonista", pas encore de toute façon.


37
2018-04-25 11:23



Il y a PEP 8, comme le montrent d'autres réponses, PEP 8 n'est que le guide de style de la bibliothèque standard, et c'est seulement pris comme gospel. L'une des déviations les plus fréquentes de PEP 8 pour d'autres morceaux de code est la dénomination des variables, spécifiquement pour les méthodes. Il n'y a pas de style prédominant unique, bien qu'en considérant le volume de code qui utilise mixedCase, si l'on devait faire un recensement strict on finirait probablement avec une version de PEP 8 avec mixedCase. Il y a peu d'autres déviations de PEP 8 qui sont tout aussi courantes.


31
2017-10-01 21:12



Comme mentionné, PEP 8 dit d'utiliser lower_case_with_underscores pour les variables, les méthodes et les fonctions.

Je préfère utiliser lower_case_with_underscores pour les variables et mixedCase pour les méthodes et les fonctions rend le code plus explicite et lisible. Ainsi, suite à Zen de Python "explicite est meilleur qu'implicite" et "la lisibilité compte"


27
2017-11-05 02:51



Personnellement, j'essaie d'utiliser CamelCase pour les classes, les méthodes et les fonctions de mixedCase. Les variables sont généralement soulignées séparées (quand je peux me souvenir). De cette façon, je peux dire d'un coup d'œil ce que j'appelle exactement, plutôt que de tout regarder de la même manière.


15
2017-10-02 03:24



La plupart des gens python préfèrent les traits de soulignement, mais même si j'utilise Python depuis plus de 5 ans maintenant, je ne les aime pas encore. Ils me semblent moche, mais peut-être que c'est tout Java dans ma tête.

J'aime simplement mieux CamelCase car il correspond mieux à la façon dont les classes sont nommées, il semble plus logique d'avoir SomeClass.doSomething() que SomeClass.do_something(). Si vous regardez dans l'index du module global dans python, vous trouverez les deux, ce qui est dû au fait que c'est une collection de bibliothèques provenant de diverses sources qui ont augmenté et qui n'ont pas été développées par une compagnie comme Sun avec des règles de codage strictes . Je dirais que la ligne de fond est: Utilisez ce que vous préférez, c'est juste une question de goût personnel.


14
2017-10-01 21:16



Il y a un article à ce sujet: http://www.cs.kent.edu/~jmaletic/papers/ICPC2010-CamelCaseUnderScoreClouds.pdf

TL; DR Il est dit que snake_case est plus lisible que camelCase. C'est pourquoi les langues modernes utilisent (ou devraient utiliser) le serpent partout où ils le peuvent.


7
2018-05-09 16:20