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


Answers

Google Python Style Guide 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_var_fonction, nom_var_local

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

Question

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?




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.




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, en suivant le Zen de Python, «explicite vaut mieux qu'implicite» et «la lisibilité compte»




Comme le guide de style pour le code Python l' admet,

Les conventions de nommage de la bibliothèque de Python sont un peu en désordre, donc nous n'obtiendrons jamais cela complètement cohérent

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 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 C # (claires et bien établies) pour les variables et les fonctions lors du passage en 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 est la plus importante.

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.




Le style de codage fait généralement partie des normes de politique / convention internes d'une organisation, mais je pense qu'en général, le style all_lower_case_underscore_separator (aussi appelé snake_case) est le plus courant dans python.