Buenas prácticas en Python

Programar es divertido, sobre todo si tienes a tus manos el lenguaje de programación y otras herramientas de tu elección, sin embargo, a veces cometemos errores que bien fácil podemos evitar si seguimos estas buenas prácticas.

Usa un editor de código con buen soporte para Python

La mayoría de los editores de texto tienen soporte para Python, pero unos tienen mas que otros. Algunos son extensibles gracias a plug-ins, otros traen todo incluido. Sin embargo es bueno que le dediques un tiempo a buscar el mejor para tus necesidades.

Por ejemplo, para una edición rápida yo ocupo normalmente VIM. es mi editor de texto favorito y gracias a la cantidad de plugins que tiene puedes extender su uso para Python.  Me gusta mucho que puedo crear codigo y correrlo en corto dentro de vim sin crear realmente un archivo.

[KGVID]https://islascruz.org/blog/wp-content/uploads/2018/07/Screeny-Video-Jul-24-2018-at-4.43.01-PM.mov[/KGVID]

A veces el trabajo es mas que unos cuantos archivos, para este caso uso un IDE, mi IDE favorito es PyCharm Pro, es muy rápido, el manejo de archivos es super fácil, la integración con GIT es bastante buena, pero sobre todo la integración con Python y Django.

Las referencias entre el código son muy acertadas: Cmd + click en una función/clase/variable me lleva a su definición.  Muchas veces escribo el código y cuando hay una función/variable no definida posiciono el cursor en dicho código, presiono Cmd+1 y me aparecen opciones para importar el objeto si es que esta definido en algún lugar o crearlo. también te dice si hay variables creadas y no usadas.

Además el formateo del código es bastante bueno, escribo un pedazo de código y presiono “Cmd+F” y listo, formato automático e imports optimizados.

Sigue la PEP8 al escribir código

Esto te ayudará y ayudará al resto de tu equipo a tener código legible, algo que pueda mantenerse por mucho tiempo. A veces estamos acostumbrados a otros lenguajes donde escribimos sin limites, pero leer código se vuelve difícil si aparte de desplazarte de arriba hacia abajo tienes que hacerlo de izquierda a derecha.

Además, tener un limite de caracteres te ayuda a medir la cantidad de veces que estas anidando código, lo mejor es evitar código anidado.

Otras herramientas que puedes usar es flake8 y autopep8, Ambos son herramientas que usas desde la terminal o integradas en su editor para formatear el código.

Usa el Zen of Python como guía para tomar decisiones

El Zen de Python te dará la guía para decidir sobre que hacer con tu código, no te dice como lo debes escribir, sino como debes pensar si estas programando en Python.

Entre los principios que mas me gustan:

  • Explícito es mejor que implícito: Que no se asuma nada, asegúrate que las cosas sean.
  • Simple es mejor que complejo: Evita código complejo, código espagueti o que hace mas cosas para poder hacer una simple tarea.
  • Plano es mejor que anidado: Si tu código tiene mas de 3 niveles de identación, deberías mover parte de ese código a una función.
  • Los errores nunca deberían pasar silenciosamente y A menos que se silencien explícitamente: No uses un Try/Except sin definir que tipo de error vas a cachar, viene de la mano con Explicito es mejor que implícito.
  • Si la implementación es difícil de explicar, es mala idea.

Para la consulta rápida aplica este código en el interprete de Python:

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Aprende las diferencias entre diferentes formas de hacer las cosas

Python no es un lenguaje que en el que las cosas se hagan de una sola forma, por ejemplo, para duplicar una lista.

a = range(10)
b = a[:]
c = [k for k in a]
d = []
for i in a:
    d.append(i)
e = []
e.extend(a)

for i in "abcde":
    print i
    print locals()[i]

a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
c
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
d
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
e
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Todas son formas válidas de copiar una lista, pero alguna de ellas es mas eficiente que la otra, tal vez ser eficiente implica complejidad en la lectura del código, o resulta en asignación de memoria innecesaria; aprende cual es la mas óptima para tu código, y recuerda, simple es mejor que complejo.

Aprende la sintaxis de Python.

La sintaxis básica asumo que ya la sabes, no hay mayor complicación, pero hay uno que otro truquito en la sintaxis de Python, sabias que puedes intercambiar valores en las variables de forma fácil?.

Algo como esto:

Val1 = 15
Val2 = 25
print "Antes del cambio: ", Val1, Val2
Antes del cambio: 15 25

temp = Val1
Val1 = Val2
Val2 = temp
print "despues del cambio", Val1, Val2
despues del cambio 25 15

Puede perfectamente quedar así:

Val1 = 15
Val2 = 25
print "Antes del cambio: ", Val1, Val2
Antes del cambio: 15 25

Val1, Val2 = Val2, Val1
print "despues del cambio", Val1, Val2
despues del cambio 25 15

Ejemplos como este hay muchos, siempre hay una forma “pythonica” de hacer las cosas.


Si te gustó el articulo, compartelo en tus redes sociales, si tienes algo  que agregar con toda confianza hazlo en los comentarios.

También tenemos un curso básico de programación en Python que puedes aprovechar para reforzar tus conocimientos

Loading