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.

22 comentarios en «Los 12 mandamientos del código Python»

  1. 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)…

  2. 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.

  3. 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

  4. Pingback: Los 12 mandamientos del código Python

  5. 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.

  6. @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.

  7. @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).

  8. 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

  9. 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.

  10. 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!!

  11. Pingback: Guia de Estilo Python: Los 12 Mandamientos « jorge.kalmbach

  12. Pingback: Los 12 mandamientos del código Python

  13. Pingback: 6 tips de IBM al momento de Programar (Parte 1) « KaLiMaNSuRf

  14. Pingback: Campus Virtual mmendiola.net » Las 12 reglas de oro del código Python

Responder a savedjuli Cancelar respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.