notifications Notificaciones

Marcar todas como le铆das

Ver m谩s

lightbulb_outline

5 tips para mejorar como programador Python

timer 4 Min.

remove_red_eye 11720

calendar_today 16/12/19

Que tal gente de C贸digoFacilito, 馃帀 mi nombre es Eduardo y en esta ocasi贸n me gustar铆a compartir con todos ustedes 5 tips los cuales espero puedan serles de mucha ayuda al momento de trabajar con Python. 馃悕

Es importante mencionar que estos no son tips de "hacks" con el lenguaje, no vamos a ver ejemplos como el siguiente:

>>> a = [ (0, 'Curso'), (1, 'C贸digoFacilito') ]
>>> for {}[()], x in a:
>>>     print(x)

Curso
C贸digoFacilito

En donde en un ciclo for podemos reemplazar el gui贸n bajo por algo un poco menos convencional, no, nada de eso. Estos tips est谩n pensados m谩s a la productividad y a nuestro proyectos, sin embargo si te gustar铆a un v铆deo de "hacks con Python" o un v铆deo de "C贸mo escribir c贸digo m谩s pythonista" dejanoslo saber en la secci贸n de comentarios. 馃槑

Bien, sin m谩s dilaci贸n comencemos.

Utilizar entornos virtuales

Una muy buena idea al momento de comenzar cualquier proyecto en Python es utilizar un entorno virtual. C贸mo sabemos habr谩 ocasiones en las cuales tengamos la necesidad de hacer uso de alg煤n m贸dulo, librer铆a o Framework que no se encuentre en la biblioteca est谩ndar de Python. En esos casos, para evitar conflictos entre versiones y que nuestros proyectos est茅n completamente aislados unos de otros, un entorno virtual es sin duda la soluci贸n.

Con las nuevas versiones de Python no hay excusas, crear un entorno virtual es extremadamente sencillo, basta con ejecutar el siguiente comando. 馃槑

python -m venv <nombre de nuestro entorno>

Y de esta forma tendremos nuestro propio entorno virtual listo para ser utilizado.

De forma personal, en la mayor铆a de los casos, yo no coloco el entorno dentro del proyecto per se, esto por el siemple hecho que no es una muy buena idea subir las dependencias al repositorio, creo que es mejor colocar el entorno al mismo nivel que el proyecto.

Implementar el archivo requirements.txt

Este es un punto que s铆 o s铆 tendremos que utilizar en alg煤n punto de nuestra carrera, m谩s a煤n si estamos pensado en trabajar en alg煤n proyecto de forma colaborativa.

Por si no lo sab铆as, por convenci贸n todos los desarrolladores Python debemos colocar las dependencias de nuestros proyectos, junto con sus correspondientes versiones, en un archivo llamado requirements.txt. Este archivo deber谩 ser incluido en el repositorio del proyecto con la finalidad que al momento de desplegar la aplicaci贸n en cualquier computadora la instalaci贸n de las dependencias sea los m谩s sencilla posible.

Para crear el archivo basta con ejecutar.

pip freeze > requirements.txt

Y para instalar las dependencias a partir del archivo.

pip install -r requirements.txt

Cada vez que agreguemos o removamos alguna dependencia del proyecto, por m铆nima que sea, estaremos obligados a sobreescribir el archivo, ya que es nuestra obligaci贸n como desarrolladores mantener el archivo actualizado.

Si queremos desplegar nuestra aplicaci贸n a producci贸n el archivo requirements.txt ser谩 indispensable.

Docstring

Si bien es cierto que dar nuestro primeros pasos con las pruebas unitarias puede llegar hacer, en la mayor铆a de los casos, tedioso (Lo digo yo 馃懟) la mejor forma m谩s sencilla de comenzar con Python es sin duda utilizando el Docstring y el Doctest.

Basta con que en la documentaci贸n de nuestras funciones y/o m茅todos coloquemos un par de casos de prueba, casos con los cuales queramos testear la funcionalidad.

Veamos un ejemplo.

def palindromo(mensaje):
    """
    Parameters:
    - mensaje (str)

    >>> palindromo('Anita lava la tina')
    True
    >>> palindromo('Hola C贸digoFacilito')
    False
    """
    mensaje = mensaje.lower().replace(' ', '')
    return mensaje == mensaje[::-1]

Una vez hayamos definido un par de pruebas, en este caso el llamado a la funci贸n con dos diferentes argumentos, ejecutamos el siguiente comando.

python -m doctest archivo.py

Si no obtenemos ning煤n error podemos dar por hecho que todos los casos se ejecutaron de forma correcta.

Esta pr谩ctica sin duda nos dar谩 el h谩bito de comenzar a utilizar pruebas para testear cada uno de nuestros proyectos.

Anotaciones

En versiones actuales de Python se implementaron los annotations, que, en t茅rminos simple no son m谩s que expresiones las cuales sirven para representar ciertas partes del c贸digo.

Veamos un peque帽o ejemplo.

from typing import List
Vector = List[float]

def scale(scalar: float, vector: Vector) -> Vector:
    return [scalar * num for num in vector]

new_vector = scale(2.0, [1.0, -4.2, 5.4])

Tal cual, un lenguaje de tipado fuerte, con python podemos dar mayor claridad a los desarrolladores de los tipos de datos con los que se trabajar谩n, en este caso indic贸 el tipo de los par谩metros y el valor de retorno.

Desde mi punto de vista creo que las anotaciones que es un excelente feature el cual en muchas ocasiones no estamos aprovechando. Es cierto que el c贸digo de python es muy f谩cil de leer, y m谩s a煤n si seguimos las convenciones de pep8, sin embargo creo que no estar铆a de m谩s utilizar las anotaciones para evitar cualquier tipo de ambig眉edad por parte de los programadores, m谩s aun si queremos liberar nuestro proyecto a la comunidad.

M贸dulo Login

La forma m谩s sencilla de testear nuestras aplicaciones es sin duda utilizando la funci贸n print, no me dejar谩n mentir y sin duda m谩s de uno hemos utilizado esta t茅cnica para debuguear si nuestra aplicaci贸n. Yo lo he hecho, coloc贸 mensajes como: Entramos a la funci贸n x, se ejecut贸 y algoritmo, retornamos z etc ... Esto funciona, sin embargo, si queremos escribir c贸digo de calidad y de forma profesional lo que debemos hacer es optar por utilizar el m贸dulo logging.

Lo interesante del m贸dulo logging es que nos permite trabajar con 5 tipos de mensajes.

  • Debug
  • Info
  • Warning
  • Error
  • Critial

Cada un de ellos con un nivel bien definido, con lo cual seremos capaces de configurar que tipo de mensaje podr谩s o no ver el usuario, adem谩s por si fuera poco los mensajes pueden enviarse en al standard output o al est谩ndar error, dependiendo cual sea el caso.

import logging

# Debug (10), Info (20), Warning (30), Error (40), Critical (50)

#logging

logging.basicConfig(
    level=logging.DEBUG,#10
    format='%(message)s - %(processName)s',
    #datefmt='%H:%M:%S',
    #filename='messages.txt'
)

logging.debug('Este es un mensaje de tipo Debug')
logging.info('Este es un mensaje de tipo Info')
logging.warning('Este es un mensaje de tipo Warning')
logging.error('Este es un mensaje de tipo Error')
logging.critical('Este es un mensaje de tipo Critical')

Otra de las ventajas de utilizar logging es que si as铆 lo deseamos podemos configurar los mensajes para conocer qu茅 thread y/o proceso se est谩 ejecutando, algo que con la funci贸n print no podremos.

Por esto y mucho m谩s, si queremos desarrollar programas profesionales con Python, el m贸dulo logging es indispensable.

Conclusi贸n

Bien, estos ser铆an algunos tips los cuales consider贸 te ser谩 de mucha ayuda al estar desarrollando cualquier proyecto en Python. Si bien creo que 5 tips son poco, quiz谩s tengamos otra segunda entrega con otros 5 tips en complemento a este v铆deo.

Y cuentame, que otro tip de desarrollo Python te gustar铆a compartir con la comunidad, no olvides colocarlo en la secci贸n de comentarios. Sin m谩s, yo me despido, muchas gracias por tu valioso tiempo. 馃悕馃嵒

Otros art铆culos del blog

Comunidad

Inicia sesi贸n o Reg铆strate para poder agregar tu respuesta.