Los 12 mandamientos del código Python

Hace tiempo traduje la Guía de estilo del código Python, escrita por Guido van Rossum, creador de Python, y Barry Warsaw y Modismos y Anti-Modismos en Python, de Moshe Zadka. Para aquellos demasiado vagos para leerlos, también os pueden ser de utilidad estos 12 mandamientos del código Python de Command Line Warriors.

Guido, que te sacó de la tierra de Visual Basic, de la casa de la servidumbre, habló así:

  1. Los nombres de los módulos deben estar en minúsculas – hola.py
  2. Los nombres de las clases deben usar CamelCase
  3. Los métodos y funciones deben usar minusculas_con_guion_bajo
  4. Los métodos privados para uso interno comienzan con _guion_bajo
  5. Los atributos de clase con __doble_guion_bajo
  6. Las constantes en el primer nivel del código (las que no se encuentran dentro de una función o una clase) deben usar LETRASMAYUSCULAS. Usar demasiadas constantes puede hacer que tu código sea menos reutilizable.
  7. Si una variable en una función o método es tan temporal que no puedes darle un nombre, utiliza i para la primera, j para la segunda, y k para la tercera.
  8. Indenta con cuatro espacios por nivel. Sin tabuladores. Si rompes este mandamiento serás lapidado en la plaza del pueblo.
  9. Las líneas no deberían tener nunca más de 80 caracteres. Divide las líneas usando una barra invertida. No necesitas hacer esto si hay paréntesis, llaves o corchetes.
  10. Espacio después de una coma (huevos, verdes, con, jamon)
  11. Espacio antes y después de un operador i = i + 1
  12. Escribe cadenas de documentación para todos los módulos, funciones, clases y métodos públicos. Python es una comunidad internacional, así que utiliza el inglés para las cadenas de documentación, los nombres de los objetos y los comentarios.
Comentarios
  1. Luis

    Rayos pobre juan, bueno enviare flores a la esposa(hmmm y un jamon).
    y a los niños les explicare que por no seguir el mandamiento #8 su papa esta con El principe de las tinieblas(Experto programador de VB)…

    Responder

  2. savedjuli

    Primero, enhorabuena por tu página, la he descubierto hace muy poquito y me parece genial (a mi modesto y limitado entender :P) y segundo, gracias por tu manual y las traducciones sobre Python, soy “autodidacta” en el tema informático y me quiero meter en la programación, porque me parece muy entretenido y la verdad es que nunca viene mal ampliar conocimientos y currículum, por ello se agradece que exista gente como tú. Un saludo y muchas gracias.

    Responder

  3. marcos

    Excelente!
    Y las variables como serían?
    unaVariable?

    Gracias!

    Responder

  4. @marcos, recomiendan minúsculas con palabras separadas por guiones bajos.

    Responder

  5. marcos

    @Zootropo, Muchisimas gracias…

    Responder

  6. Podrías poner los enlaces a las versiones originales, porfavor?

    Responder

  7. mas ingles ?

    muchos pueden usar el ingles pero recordemos de donde vienen la mayoria hay que hacer las kosas mas faciles a los estudiantes

    el open source la documentacion y la traduccion de idiomas es lo mejor

    Responder

  8. […] Los 12 mandamientos del código Pythonmundogeek.net/archivos/2008/06/18/los-12-mandamientos-del-co… por bull3tpr00f hace pocos segundos […]

    Responder

  9. Buenisima esta entrada y si en realidad si serian unos verdaderso mandamientos

    Responder

  10. username2

    Soy programador java (primordialmente) y nunca he entendido el por que de los mandamientos 4 y 5

    4. Los métodos privados para uso interno comienzan con _guion_bajo
    5. Los atributos de clase con __doble_guion_bajo

    a mi parecer hacen ver el código mas complicado y menos legible a primera vista, pero bueno, cada quien sus gustos.

    Responder

  11. @username2 Yo que también programo en java pero con esta página y un poco de hue**s y corazón me dispuse a aprender Python creo que te puedo responder, en java tienes variables públicas y privadas, acá la encapsulación se hace un poco más compleja, así que la mejor forma de emular este encapsulamiento (lo hay, pero diferente) es con los guiones bajos… En realidad no iba a comentar sobre eso, solo que el mandamiento 8 me hizo reir at loud…. Además estaba cogiendo la maña de nada más usar un espacio para no usar tabulador, pero 4 son muchos espacios, aunque se ve mejor…. Y de acuerdo con lo de los StringDocs en español, nada de inglés, que viva la documentación en español, además ¿Qué puesto ocupamos en el idioma más hablado del mundo?? Creo que estamos casi en la punta.

    Responder

  12. Quiero decir, docstrings en vez de StringDocs XD

    Responder

  13. The Machine

    OOHHHH, ayudenme por favor, he quebrantado el mandamiento #8 varias veces, PIEDAD,PIEDAD.

    Responder

  14. The Machine

    AHHH se me olvidaba, el #12 tambien.

    MUNDOGEEK, lo + fuerte.

    Responder

  15. @username2 En Python no existen los modificadores de acceso. No por una cuestión técnica, claro, sino por una cuestión de filosofía.

    Lo que dicen es que, como programador, nunca vas a conocer todos los usos que una persona podría dar a tu código. A una persona le podría ser de mucha utilidad una cierta clase o unas ciertas funciones de tu código para hacer algo para lo que ni siquiera pensaste que se podría usar tu código.

    Por eso piensan que es mejor no tratar a los usuarios como tontos y dejarles hacer, pero indicándoles con _ que eso no está soportado, y que no tiene por qué funcionar o por qué trabajar así en próximas versiones.

    De todas formas, también puedes utilizar __ para hacer name mangling, sobre escribir __getattr__ o __getattribute__ para controlar el acceso, o usar propiedades.

    Siempre podrían acceder desde el diccionario de miembros, pero esto ya sería nocturnidad y alevosía, y sería equivalente a que el usuario usara sed para eliminar la palabra clave private de las clases Java (si tiene el código).

    Responder

  16. Estoy de acuerdo con todas excepto con la última…
    Qué es eso de tener que hablar en guiri para que a ellos les sea más sencillo? Me parece muy bien que se pueda aprovechar mi código para otras personas, pero encima tengo que incomodarme yo traduciéndolo al inglés para que ellos no se incomoden de traducirlo desde el castellano?

    Si, estoy de exámenes y no d muy buen humor, que pasa!? :@

    xD

    Responder

  17. username2

    Ya decia que habia que tener una buena razón para esas reglas sintácticas (o mandamientos debería decir jejeje). Gracias por la explicación.

    Responder

  18. si la neta no debemos de usar tanto el ingles despues de todo ellos no lo hacen mas facil para nosotros ACASO EL COMPILADOR TE RECIBE SPANISH-LIKE CODE

    incluso asta estoy aprendiendo italiano porke el uniko programador ke hace tutos para xcode es de xcodeitalia.com

    ¬¬

    MULTI IDIOMAS!!

    Responder

  19. […] Guia de Estilo Python: Los 12 Mandamientos Leido en MundoGeek […]

    Responder

  20. […] mandamientos los tradujo Raul de Mundo Geek del artículo original de Command Line Warriors. Archivado en Programación Deja aquí tu […]

    Responder

  21. […] escrito algo, sepas el tipo de variable, si es un objeto, si es constante, etc… por ejemplo, en los 12 mandamientos de python dice del primer al séptimo […]

    Responder

Deja un comentario