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

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

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

En Python, vi arriba, pero también vi que se usan guiones bajos:

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

¿Existe un estilo de codificación preferido y definitivo para Python?

464
02 окт. fijado por Ray Vega 02 oct. 2008-10-02 00:01 '08 a las 12:01 am del 2008-10-02 00:01
@ 11 respuestas

Ver Python PEP 8 .

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

mixedCase solo se permite en contextos donde el estilo ya prevalece.

Variables ...

Use las convenciones de nomenclatura de funciones: las minúsculas con palabras separadas subrayan la necesidad de mejorar la legibilidad.

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

560
02 окт. La respuesta se da S.Lott 02 oct. 2008-10-02 00:05 '08 a las 0:05 2008-10-02 00:05

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

border=0

nombre_módulo, nombre de paquete, nombre de clase, nombre de usuario, nombre de instancia, nombre de función, NOMBRE_CONSTANTE GLOBAL, nombre_var_juego global, nombre_var de instancia, nombre_parámetro de función, nombre_varámetro local

399
08 дек. La respuesta está dada por JohnTESlade 08 dec. 2011-12-08 01:44 '11 a la 1:44 2011-12-08 01: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 una constante

  • StudlyCaps para clases

  • camelCase solo para coincidir acuerdos preexistentes

176
02 окт. La respuesta se da sin montar 02 oct. 2008-10-02 06:53 '08 a las 6:53 am del 2008-10-02 06:53

Hay un PEP 8 , como lo muestran otras respuestas, pero PEP 8 es solo un estilo de biblioteca estándar y se usa solo como un evangelio en él. Una de las desviaciones más frecuentes de PEP 8 para otros fragmentos de código es la denominación de variables, especialmente para los métodos. No hay un estilo único, aunque, dada la cantidad de código que utiliza mixedCase, si alguien tuviera que realizar un censo estricto, la versión de PEP 8 con mixedCase probablemente terminará. Hay una desviación ligeramente diferente de la PEP 8, que es bastante común.

29
02 окт. Responder a Thomas Wouters 02 oct 2008-10-02 00:12 '08 a las 12:12 2008-10-02 00:12

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

Las convenciones de nomenclatura de la biblioteca de Python son un poco desordenadas, por lo que nunca obtendremos esta coherencia

Tenga en cuenta que esto solo se aplica a la biblioteca estándar de Python. Si no pueden obtenerlo en concierto, entonces no hay una gran esperanza de tener una convención común para todos los códigos Python, ¿verdad?

De esto y de la discusión aquí, llego a la conclusión de que no es un pecado terrible, si continúa usándolo, por ejemplo. Convenciones de nomenclatura de Java o C # (claras y bien establecidas) para variables y funciones cuando se cambia a Python. Por supuesto, teniendo en cuenta que es mejor atenerse a cualquier estilo prevaleciente para el código base / proyecto / equipo. Como lo señala la guía de estilo de Python, la consistencia interna es importante.

Siéntase libre de descartarme como hereje. :-) Como OP, no soy un "Pythonista", no todos iguales.

29
25 апр. Respuesta dada por Jonik el 25 de abril. 2010-04-25 14:23 '10 a las 2:23 pm 2010-04-25 14:23

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

Prefiero usar lower_case_with_underscores para variables y mixedCase para métodos y funciones, haciendo que el código sea más explícito y legible. Por lo tanto, siguiendo a Zen of Python , "explícito es mejor que implícito" y "cuenta de legibilidad"

25
05 нояб. La respuesta es dada por claytron 05 nov. 2008-11-05 05:51 '08 a las 5:51 am del 2008-11-05 05:51

La mayoría de los usuarios de python prefieren los guiones bajos, pero incluso yo he estado usando python desde hace más de 5 años. Simplemente me parecen feos, pero tal vez todo el Java en mi cabeza.

Simplemente me gusta más CamelCase, ya que es más adecuado para las clases llamadas clases. Es más lógico tener SomeClass.doSomething() que SomeClass.do_something() . Si observa el índice modular global en Python, encontrará ambos porque es una colección de bibliotecas de varias fuentes que han crecido en horas extras, y no algo que fue desarrollado por una compañía, como Sun, con reglas estrictas. Codificación, diría el resultado final: use lo que quiera, es solo una cuestión de gusto personal.

13
02 окт. respuesta dada André 02 oct. 2008-10-02 00:16 '08 a las 12:16 AM 2008-10-02 00:16

Personalmente, estoy tratando de usar CamelCase para las clases, métodos y funciones de mixedCase. Las variables suelen estar resaltadas (si recuerdo). Por lo tanto, puedo decir inmediatamente lo que llamo, y no todo lo que se ve igual.

13
02 окт. respuesta dada por crystalattice 02 oct 2008-10-02 06:24 '08 a las 6:24 am 2008-10-02 06:24

Como regla general, siga las convenciones utilizadas en la biblioteca estándar de idiomas.

2
02 окт. la respuesta se da yfeldblum 02 oct. 2008-10-02 06:55 '08 a las 6:55 am del 2008-10-02 06:55

Hay un artículo sobre esto: http://www.cs.kent.edu/~jmaletic/papers/ICPC2010-CamelCaseUnderScoreClouds.pdf

Si eres perezoso de leer, dice que snake_case es más legible que camelCase. Es por eso que las lenguas modernas usan (o deberían usar) la serpiente, dondequiera que estén.

2
09 мая '16 в 19:20 2016-05-09 19:20 Respuesta dada a alebian el 9 de mayo de 2016 a las 19:20 2016-05-09 19:20

El estilo de codificación suele ser parte de las políticas / convenciones internas de la organización, pero creo que, en general, el estilo all_lower_case_underscore_separator (también llamado snake_case) es más común en python.

2
02 окт. respuesta dada fuentesjr 02 oct. 2008-10-02 00:08 '08 a las 0:08 2008-10-02 00:08