¿Cuál es la convención de nomenclatura en Python para variables y funciones?

Resuelto Ray asked hace 16 años • 16 respuestas

Procedente de C#, la convención de nomenclatura para variables y métodos suele ser camelCase o PascalCase:

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

En Python, he visto lo anterior pero también he visto que se usa Snake_case:

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

¿Existe un estilo de codificación más preferible y definitivo para Python?

Ray avatar Oct 02 '08 04:10 Ray
Aceptado

Consulte Python PEP 8: nombres de funciones y variables :

Los nombres de las funciones deben estar en minúsculas, con las palabras separadas por guiones bajos según sea necesario para mejorar la legibilidad.

Los nombres de variables siguen la misma convención que los nombres de funciones.

MixedCase solo se permite en contextos donde ese ya es el estilo predominante (por ejemplo, threading.py ), para conservar la compatibilidad con versiones anteriores.

S.Lott avatar Oct 01 '2008 21:10 S.Lott

La Guía de estilo de Google Python tiene la siguiente convención:

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_

Se debería aplicar un esquema de denominación similar a unCLASS_CONSTANT_NAME

John Slade avatar Dec 07 '2011 22:12 John Slade

David Goodger (en "Code Like a Pythonista" aquí ) describe las recomendaciones de PEP 8 de la siguiente manera:

  • joined_lowerpara funciones, métodos, atributos, variables

  • joined_lowero ALL_CAPSpara constantes

  • StudlyCapspara clases

  • camelCasesólo para ajustarse a convenciones preexistentes

unmounted avatar Oct 02 '2008 03:10 unmounted

Como admite la Guía de estilo para el código Python ,

Las convenciones de nomenclatura de la biblioteca de Python son un poco confusas, por lo que nunca conseguiremos que esto sea completamente consistente.

Tenga en cuenta que esto se refiere sólo a la biblioteca estándar de Python . Si no pueden ser tan consistentes, entonces no hay muchas esperanzas de tener una convención generalmente cumplida para todo el código Python, ¿verdad?

De eso, y de la discusión aquí, deduciría que no es un pecado horrible si uno sigue usando, por ejemplo, convenciones de nomenclatura de Java o C# (claras y bien establecidas) para variables y funciones al pasar a Python. Teniendo en cuenta, por supuesto, que es mejor cumplir con cualquier estilo predominante para una base de código/proyecto/equipo. Como señala la Guía de estilo de Python, la coherencia interna es lo más importante.

Siéntase libre de descartarme como hereje. :-) Al igual que el OP, no soy un "Pythonista", al menos todavía no.

Jonik avatar Apr 25 '2010 11:04 Jonik