Venant d'un arrière-plan C #, la convention de dénomination des variables et des noms de méthode est généralement camelCase ou PascalCase:
// C# example
string thisIsMyVariable = "a"
public void ThisIsMyMethod()
En Python, j'ai vu ce qui précède, mais j'ai également vu des soulignements utilisés:
# python example
this_is_my_variable = 'a'
def this_is_my_function():
Existe-t-il un style de codage définitif plus préférable pour Python?
findMeAClass
est peut-être plus laid quefind_me_a_class
.Le guide de style Google Python a la convention suivante:
Un schéma de dénomination similaire doit être appliqué à un
CLASS_CONSTANT_NAME
la source
property
... peut-être est-ce une question de ce que l'article prétend être, plutôt que de ce qu'il est réellementDavid Goodger (dans "Code Like a Pythonista" ici ) décrit les recommandations de PEP 8 comme suit:
joined_lower
pour les fonctions, méthodes, attributs, variablesjoined_lower
ouALL_CAPS
pour des constantesStudlyCaps
pour les courscamelCase
uniquement pour se conformer aux conventions préexistantesla source
joined_lower
des constantes , seulement "toutes les lettres majuscules avec des traits de soulignement séparant les mots". Curieux également de la nouvelle fonctionnalité d' énumération .StudlyCaps for classes
est une excellente règle universelle pour les cours dans presque toutes les langues. Alors pourquoi y a-t-il des classes intégrées en python (comme cellesdatetime.datetime
qui ne suivent pas cette convention?unittest.TestCase.assertEqual
et les amis ne suivent pas non plus la convention snake_case. La vérité est que des parties de la bibliothèque standard de Python ont été développées avant que les conventions ne se soient solidifiées, et nous sommes maintenant coincés avec elles.Comme le reconnaît le Guide de style pour le code Python ,
Notez que cela se réfère uniquement à la bibliothèque standard de Python . S'ils ne peuvent pas obtenir cette cohérence, alors il n'y a guère d'espoir d'avoir une convention généralement respectée pour tout le code Python, n'est-ce pas?
De cela, et de la discussion ici, je déduirais que ce n'est pas un péché horrible si l'on continue à utiliser, par exemple, les 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. Comme le souligne le Guide de style Python, la cohérence interne est primordiale.
N'hésitez pas à me rejeter comme hérétique. :-) Comme l'OP, je ne suis pas "Pythonista", pas encore de toute façon.
la source
Il y a PEP 8 , comme d'autres réponses le montrent, mais PEP 8 n'est que le guide de style pour la bibliothèque standard, et il n'est considéré que comme un évangile. L'un des écarts les plus fréquents de PEP 8 pour d'autres morceaux de code est la dénomination des variables, en particulier pour les méthodes. Il n'y a pas de style prédominant unique, bien que compte tenu du volume de code qui utilise mixedCase, si l'on devait faire un recensement strict, on se retrouverait probablement avec une version de PEP 8 avec mixedCase. Il y a peu d'autre déviation par rapport à PEP 8 qui est tout aussi courante.
la source
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 etmixedCase
pour les méthodes et fonctions rend le code plus explicite et lisible. Ainsi, suivre le Zen de Python "explicite vaut mieux qu'implicite" et "Nombre de lisibilité"la source
suite à ce que @JohnTESlade a répondu. Guide de style python de Google contient des recommandations assez soignées,
Noms à éviter
\__double_leading_and_trailing_underscore__ names
(réservé par Python)Convention de dénomination
CapWords
pour les noms de classe, maislower_with_under.py
pour les noms de module. Bien qu'il existe de nombreux modules existants nommésCapWords.py
, cela est désormais déconseillé car cela prête à confusion lorsque le module porte le nom d'une classe. ("attends - ai-je écritimport StringIO
oufrom StringIO import StringIO
?")Lignes directrices dérivées des recommandations de Guido
la source
La plupart des gens python préfèrent les soulignés, mais même j'utilise python depuis plus de 5 ans en ce moment, je ne les aime toujours pas. Ils me semblent laids, mais c'est peut-être tout Java dans ma tête.
Je simplement comme CamelCase mieux , car il correspond mieux à la façon dont les classes sont nommées, il se sent plus logique d'avoir
SomeClass.doSomething()
queSomeClass.do_something()
. Si vous regardez autour de l'index du module global en 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é au fil du temps et non quelque chose qui a été développé par une entreprise comme Sun avec des règles de codage strictes . Je dirais que l'essentiel est: utilisez ce que vous aimez mieux, c'est juste une question de goût personnel.la source
make_xpath_predicate
,make_xpath_expr
,make_html_header
,make_html_footer
SomeClass.doSomething()
(les méthodes statiques sont généralement rares) vous appelez habituellementan_instance.do_something()
Personnellement, j'essaie d'utiliser CamelCase pour les classes, les méthodes et les fonctions mixedCase. Les variables sont généralement séparées par des traits de soulignement (si je me souviens bien). De cette façon, je peux dire en un coup d'œil ce que j'appelle exactement, plutôt que tout ce qui se ressemble.
la source
Il existe 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) serpent partout où elles le peuvent.
la source
Le style de codage fait généralement partie des normes internes de politique / convention d'une organisation, mais je pense qu'en général, le style all_lower_case_underscore_separator (également appelé snake_case) est le plus courant en python.
la source
J'utilise personnellement les conventions de dénomination de Java lors du développement dans d'autres langages de programmation car il est cohérent et facile à suivre. De cette façon, je ne me bats pas continuellement sur les conventions à utiliser qui ne devraient pas être la partie la plus difficile de mon projet!
la source
library_function(my_arg)
).En règle générale, on suit les conventions utilisées dans la bibliothèque standard du langage.
la source