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


Viniendo de un fondo de C #, la convención de nomenclatura para variables y nombres de métodos suele ser CamelCase o Pascal Case:

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

En Python, he visto lo anterior, pero también he visto guiones bajos utilizados:

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

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


552
2017-10-01 21:01


origen


Respuestas:


Ver Python PEP 8.

Los nombres de las funciones deben ser minúsculas,   con palabras separadas por guiones bajos como   necesario para mejorar la legibilidad

mixedCase está permitido solo en contextos   donde eso ya es el prevaleciente   estilo

Variables ...

Use las reglas de nombres de función:   minúsculas con palabras separadas por   subraya si es necesario para mejorar   legibilidad.

Personalmente, me desvío de esto porque también prefiero mixedCase encima lower_case para mis propios proyectos


659
2017-10-01 21:05



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

module_name, package_name, ClassName, method_name, ExceptionName,   nombre_función, GLOBAL_CONSTANT_NAME, nombre_var_google,   instance_var_name, function_parameter_name, local_var_name

Se debe aplicar un esquema de nombres similar a un CLASS_CONSTANT_NAME


495
2017-12-07 22:44



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

  • joined_lower para funciones, métodos, atributos, variables

  • joined_lower o ALL_CAPS para constantes

  • StudlyCaps para clases

  • camelCase solo para cumplir con convenciones preexistentes


194
2017-10-02 03:53



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

Las convenciones de nombres de Python   biblioteca son un poco desordenados, así que lo haremos   nunca conseguir esto completamente consistente

Tenga en cuenta que esto se refiere solo a Python biblioteca estándar. Si no pueden conseguir ese consistente, entonces apenas hay mucha esperanza de tener una convención generalmente adherida a todas Código de Python, ¿está ahí?

De eso, y la discusión aquí, deduciría que es no 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 cruzar a Python. Teniendo en cuenta, por supuesto, que es mejor seguir el estilo que prevalezca para una base de código / proyecto / equipo. Como señala la Guía de estilo de Python, consistencia interna lo que mas importa.

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


37
2018-04-25 11:23



Ahi esta PEP 8, como muestran otras respuestas, pero PEP 8 es solo la guía de estilo para la biblioteca estándar, y solo se considera como un evangelio. Una de las desviaciones más frecuentes de PEP 8 para otras piezas de código es la denominación variable, específicamente para los métodos. No hay un único estilo predominante, aunque teniendo en cuenta el volumen de código que usa mixedCase, si se hiciera un censo estricto, probablemente se terminaría con una versión de PEP 8 con mixedCase. Hay muy poca otra desviación de PEP 8 que sea tan común.


31
2017-10-01 21:12



Como se mencionó, PEP 8 dice que use lower_case_with_underscores para variables, métodos y funciones.

Prefiero usar lower_case_with_underscores para variables y mixedCase para los métodos y funciones hace que el código sea más explícito y legible. Así siguiendo el Zen de Python "explícito es mejor que implícito" y "Redabilidad cuenta"


27
2017-11-05 02:51



Personalmente trato de usar CamelCase para las clases, los métodos y las funciones de mixedCase. Las variables suelen estar separadas por guiones bajos (cuando puedo recordar). De esta manera, puedo decir de un vistazo qué es exactamente lo que estoy llamando, en lugar de que todo parezca igual.


15
2017-10-02 03:24