10 errores que NUNCA deberías cometer en Python

10 Python mistakes you should NEVER make

Cuando comenzamos a aprender Python, muchas veces nos encontramos con malas prácticas. En este artículo, aprenderás las mejores prácticas para llevar tu nivel de desarrollo en Python al siguiente nivel.

Recuerdo que cuando empecé a aprender Python, cometí muchos errores que, de haberlo sabido de antemano, me habrían permitido acelerar la curva de aprendizaje.

1- No definir variables en una sola línea.

a = 12b = 56c = 128

Comúnmente definimos una variable por línea; sin embargo, hay una forma de definir varias variables en solo una línea de código.

a,b,c = 12,56,128

De esta manera sencilla, podemos definir varias variables, lo que hace que el código sea más fácil de leer.

2- Usa * para importar módulos.

from numpy import *numbers = arange(1,10,step = 10)print(mean(numbers))

Generalmente usamos * para invocar los módulos de la biblioteca correspondiente. Sin embargo, no tiene sentido llamar a todos los módulos si solo estamos interesados en funciones específicas de la biblioteca.

import numpy as npnumbers = np.arange(1,10,step = 10)print(np.mean(numbers))

Importamos la biblioteca de interés, en este caso, numpy, y podemos asignarle un alias, seguido de llamar a los métodos que vamos a utilizar.

from numpy import arange,meannumbers = arange(1,10,step = 10)print(mean(numbers))

También podemos innovar directamente las funciones de la biblioteca de interés; cualquiera de estas dos formas es buena.

3- Usa “+” para concatenar.

name,year = "Amado",22print("My name is " + name + " and I am " + str(year) + " years old")

Por lo general, siempre usamos + para concatenar cadenas; sin embargo, tiene la desventaja de que no es tan comprensible.

name,year = "Amado",22print(f"My name is {name} and Im {year} years old")

Usamos literales de cadena con formato, que permiten concatenar variables independientemente de la naturaleza de la variable; tiene la ventaja adicional de que es más comprensible de leer.

Chatathon by Chatbot Conference

4- No uses la función lambda.

def function(x):  return x**2  print(function(12))

Generalmente, al crear una función, creamos una función convencional. Hay ocasiones en las que el método que creamos es algo simple pero que vamos a usar con frecuencia.

function = lambda x: x**2print(function(12))

Podemos crear una función lambda para el mismo propósito, con la agradable diferencia de hacerla más simple. Si queremos crear funciones que no sean tan complejas, es mucho mejor usar funciones lambda que funciones convencionales de Python.

5- Usando If Else en varias líneas de código.

age = 22if age>=18:  print('Eres mayor de edad')else:  print('No eres mayor de edad')

Por lo general, cuando aprendemos, estamos acostumbrados a declarar la instrucción if else de esta manera; sin embargo, se puede simplificar a solo una línea de código.

age = 22"Eres mayor de edad" if age>=18 else "No eres mayor de edad"

De esta manera, reducimos el if-else en una sola línea de código, haciéndolo más comprensible de leer.

6- Usando múltiples declaraciones condicionales If.

kepler_third_law = lambda ua: (np.round(np.sqrt(ua**3),1))def calculate_years(planet):    planet = planet.lower()    if planet == "mercury":        ua = 0.387        print(f'Número de años del planeta Mercurio: {kepler_third_law(ua)}')            if planet == "venus":        ua = 0.723        print(f'Número de años del planeta Venus: {kepler_third_law(ua)}')            if planet == "earth":        ua = 1        print(f'Número de años del planeta Tierra: {kepler_third_law(ua)}')            if planet == "mars":        ua = 1.524        print(f'Número de años del planeta Marte: {kepler_third_law(ua)}')            if planet == "earth":        ua = 1        print(f'Número de años del planeta Tierra: {kepler_third_law(ua)}')            if planet == "jupiter":        ua = 5.208        print(f'Número de años del planeta Júpiter: {kepler_third_law(ua)}')            if planet == "saturn":        ua = 9.539        print(f'Número de años del planeta Saturno: {kepler_third_law(ua)}')            if planet == "uranus":        ua = 19.182        print(f'Número de años del planeta Urano: {kepler_third_law(ua)}')            if planet == "neptune":        ua = 30.058        print(f'Número de años del planeta Neptuno: {kepler_third_law(ua)}')            if planet == "pluto":        ua = 39.439        print(f'Número de años del planeta Plutón: {kepler_third_law(ua)}')

Generalmente, usamos múltiples declaraciones if según la condición que se presente. Tiene la desventaja de requerir una cantidad excesiva de líneas de código.

import numpy as npkepler_third_law = lambda ua: (np.round(np.sqrt(ua**3),1))def calculate_years(planet):        planet = planet.lower()        ua_dict = {'saturno':9.539,               'tierra':1,               'mercurio':0.387,               'venus':0.723,              'júpiter':5.203,              'urano':19.182,              'plutón':39.439,              'marte':1.524}    years = kepler_third_law(ua_dict[planet])            return f'Número de años del planeta {planet}: {years}'

En lugar de usar múltiples declaraciones if, creamos un diccionario donde almacenamos las UA de los planetas, para luego calcular el número de años que tarda en orbitar alrededor del sol aplicando la tercera ley de Kepler; como podemos ver, aplicar esta estrategia hace que el código sea más limpio y fácil de entender.

7- No uses comprensión de listas.

import numpy as npnumbers = np.arange(1,20+1,step = 1)par_numbers = []for number in numbers:    if number %2==0:        par_numbers.append(number)

Generalmente, si queremos almacenar elementos en una lista según una condición dada, usamos bucles for; por ejemplo, en este caso, queremos almacenar solo los valores pares.

import numpy as npnumbers = np.arange(1,20+1,step = 1)[n for n in numbers if n % 2 == 0]

Usando comprensión de listas, podemos reducir significativamente las líneas de código a solo una línea.

8- No uses enumerate.

names = ['Amado','John','Artemio']last_name = ['Vazquez','Jobs','Lara']for i in range(len(names)):    print(f'{names[i]} {last_name[i]}')

Supongamos que queremos imprimir el nombre y apellido de la persona en la pantalla; para esto, usamos la función range() para definir los índices y luego imprimirlo en función de los índices generados.

names = ['Amado','John','Artemio']last_name = ['Vazquez','Jobs','Lara']for i,name in enumerate(names):    print(f'{name} {last_name[i]}')

Usar la función enumerate devuelve el índice del objeto de la lista, por lo que podemos ahorrar este paso.

9- No usar zip

manufacturer = ['Infiniti','Mazda','Nissan','BMW']model = ['Q50','Mazda 6','Altima','3 Series']engine = [3.0,2.5,2.0,2.0]for i in range(len(manufacturer)):    print(f'{manufacturer[i]} {model[i]} {engine[i]}')

Aquí cometemos un error similar al anterior, con la diferencia de que aquí queremos imprimir tres listas en armonía.

manufacturers = ['Infiniti','Mazda','Nissan','BMW']models = ['Q50','Mazda 6','Altima','3 Series']engines = [3.0,2.5,2.0,2.0]for (manufacturer,model,engine) in zip(manufacturers,models,engines):    print(f'{manufacturer} {model} {engine}')

Usar el método zip nos permite usar varias listas al mismo tiempo, es mucho más cómodo que usar el índice y también tiene la ventaja de que es mucho más fácil de entender.

10- Keys()/Items()

consoles_dict = {'PS5':499,                 'PS5 Digital':399,                 'Xbox Series S':299,                 'Xbox Series X':499}consoles_dict.keys() #'PS5','PS5 Digital','Xbox Series S','Xbox Series X'consoles_dict.values() # 499,399,299,499consoles_dict.items()

A veces mal utilizamos los diccionarios, más particularmente con los métodos para acceder a ellos. Usamos keys() para acceder a sus claves, values() se refiere a extraer los valores asignados a cada clave, y finalmente, items() nos permite extraer ambos elementos.

for key in consoles_dict:  print(key)

Si queremos acceder a la clave del diccionario, es suficiente con aplicar un ciclo al diccionario de interés.

for key in consoles_dict:  print(consoles_dict[key])

Si queremos acceder al valor del diccionario, es suficiente asignarle el nombre de la clave sobre el ciclo for.

for key,value in consoles_dict.items():  print(key,value)

Es mejor usar el método items() y agregar los dos valores a iterar para que podamos obtener tanto la clave como su valor.

11- No confiar en los módulos.

sum_ = 0for number in range(1,10+1):  sum_ += number  print(sum_/10)

Algunas bibliotecas pueden facilitar la vida; por ejemplo, existe una biblioteca llamada numpy que se utiliza para realizar cálculos matemáticos. Algunas bibliotecas pueden facilitar la vida en lugar de programar desde cero. Por ejemplo, hay una biblioteca muy famosa en ciencia de datos que se utiliza para realizar cálculos complejos.

import numpy as npnumbers = np.arange(1,10+1,1)print(np.mean(numbers))

La biblioteca numpy nos facilita mucho al hacer algunos cálculos matemáticos desde algo tan simple como una suma hasta algo más complejo como transformadas de Fourier.

12- No usar el IN

car_model = "Maxima"if car_model == "Altima" or car_model == "Maxima" or car_model == "Q50" or car_model == "Q60":    print('mMdel disponible')

En lugar de usar una larga declaración condicional, podemos apoyar la condicional IN.

car_models = ['Altima','Maxima','Q50','Q60']car_model = "Maxima"'Model disponible' if car_model in car_models else 'Model no disponible'

Crearemos una lista convencional de Python, y el operador IN comparará si el automóvil que seleccionemos está dentro de la lista. También nos basamos en la declaración if-else de una sola línea de código.

Puede interesarte.

10 errores de Pandas que NUNCA debes cometer

Este artículo revisará los 10 errores más comunes en Pandas que cometen los principiantes cuando comienzan a aprender Pandas en…

Zepes.com

Crea una hermosa aplicación usando Streamlit

Si quieres llevar tus proyectos de ML a otro nivel, donde diferentes usuarios puedan usar tu algoritmo de ML en una web…

Zepes.com

Elimina el subajuste y el sobreajuste con estos trucos

El subajuste y el sobreajuste son problemas que enfrentamos en nuestra vida cotidiana, en este artículo aprenderás los más poderosos…

Zepes.com

Muchas gracias por leer este pequeño artículo. Espero que hayas aprendido mucho y que lo pongas en práctica en tus proyectos, ya sea en Ciencia de Datos, Seguridad Informática o desarrollo web. Puedes acceder al repositorio en GitHub .

Obtén la certificación en ChatGPT + Experiencia de usuario conversacional + Dialogflow