5 consejos de Python que DEBE saber para escribir un código mejor y más corto.

Contenidos

Este artículo fue publicado como parte del Blogatón de ciencia de datos

Introducción

¿Alguna vez ha deseado escribir un código Python mejor y más corto? ¿Cómo replicar los casos de Switch tradicionales en Python? Te tengo cubierto. En este artículo, discutiremos 5 consejos / trucos de Python para escribir un código mejor y más corto. ¡Entonces empecemos!

Nota: Más corto no siempre significa mejor. Tu código debe ser Fácil de leer y entender.

Nos centraremos en escribir más corto y más legible código en este artículo. Específicamente, aprenderemos:

  • ¿Cómo hacer que los números grandes sean más legibles en código y salida (10000000 a 10,000,000)?
  • ¿Cómo tomar una contraseña como entrada de un usuario sin mostrarla realmente?
  • ¿Cómo utilizar los diccionarios para implementar los casos de interruptores?
  • ¿Cómo ahorrar memoria usando generadores?

Tabla de contenido

  1. Condicionales ternarios
  2. Trabajar con números grandes
  3. Ingresar información secreta
  4. Utilice el diccionario para replicar casos de interruptores
  5. Utilice generadores para ahorrar memoria
  6. Consejo de bonificación
  7. Resumen
  8. Notas finales

Condicionales ternarios

Tomemos una situación en la que está asignando un valor a la variable en función de alguna condición. Probablemente escribirías algo como lo siguiente:

condition = False
if condition:
    x = 1
else:
    x = 0
print(x)

El código anterior funciona correctamente, pero ¿crees que es pitónico? No lo es. Entonces, para hacer que su código sea pitónico, puede encontrar algo como lo siguiente:

condition = False
x = 1 if condition else 0
print(x)

x = 1 si la condición else 0 está en inglés sencillo y se explica por sí mismo. Por lo tanto, hace que nuestro código sea más corto y fácil de entender.

Obtendríamos el mismo resultado en ambos sentidos.

Pasemos a otro truco.

Trabajar con números grandes

Ahora hablemos de mi truco favorito. ¿Ha trabajado alguna vez con grandes números? 1000000000 o 1.000.000.000; ¿Cuál es más legible? El segundo, ¿verdad? Pero si intentamos hacer eso en Python como num1 = 1,000,000,000, obtendríamos un error.

Pero hay otro método para hacer lo mismo. Nosotros podemos usar _ para separar los dígitos que no afectan a nuestro programa. Y podemos usar :, dentro de la cadena f para separar los dígitos de salida con una coma. El siguiente código demuestra lo mismo.

num1 = 1_000_000_000     # 1 billion
num2 = 10_000_000        # 10 million
total = num1 + num2
print(f'{total:,}')      # To separate the output digits with comma
# Output
# 1,010,000,000

¿No es asombroso? De hecho, es.

Ingresar información secreta

Digamos que está tomando un nombre de usuario y una contraseña como entrada del usuario. Seguramente optaría por el siguiente enfoque.

uname = input('Enter Username: ')
pwd = input('Enter password: ')
print('Logging In....')

Producción:

99360secret-1-2083180

Imagen del autor

Pero cualquiera puede ver esa contraseña y eso viola la seguridad. Entonces, para hacerlo más seguro, estaríamos usando el conseguir pase módulo.

from getpass import getpass
uname = input('Enter Username: ')
pwd = getpass('Enter password: ')
print('Logging In....')

Producción:

74888secret-2-5784553

Imagen del autor

¿Has notado la diferencia? Ok, eso suena genial. Pasemos a otro truco.

Utilice el diccionario para replicar casos de interruptores

La mayoría de nosotros aprendemos el lenguaje C como nuestro primer lenguaje de programación. Encontré las cajas de interruptores como el concepto más simple pero importante en el lenguaje C. Ese fue el primer concepto que aprendí en programación que tiene algunas aplicaciones del mundo real. Podemos pensar en su aplicación en las llamadas de Atención al Cliente.

Muchas veces, los programadores principiantes de Python tienen dudas sobre la aplicación de casos de interruptores usando Python. Podemos usar el Diccionario Python para hacer eso en el que definimos el nombre de la función como una clave y la expresión de la función como un valor. El siguiente programa demuestra lo mismo.

calc = {
    'add': lambda x, y: x + y,
    'subtract': lambda x, y: x - y,
    'mul': lambda x, y: x * y,
    'div': lambda x, y: x / y 
}
# Smart way to call a function which is defined in a dictionary.
print(calc['add'](5, 4))
print(calc['subtract'](5, 2))
print(calc['mul'](5, 4))
print(calc['div'](10, 2))

Producción:

75697dictionary-7961332

Imagen del autor

Utilice generadores para ahorrar memoria

Digamos que tenemos una lista muy grande. Entonces, aquí tenemos 10,000 elementos en la lista y queremos calcular el cuadrado de cada elemento. Podemos hacer eso con la lista de comprensiones con el código que se ve como el siguiente.

import sys
squares_list = [i*i for i in range(10_000)]
# To print the size of a variable 
print(sys.getsizeof(squares_list, "bytes"))
# Output
# 87632

Entonces, este es un ejemplo perfecto donde podemos usar generadores. De manera similar a las listas por comprensión, podemos usar las comprensiones del generador donde tenemos paréntesis en lugar de llaves cuadradas. Un generador calcula nuestros elementos de forma perezosa. Por lo tanto, produce solo un artículo a la vez y solo cuando se lo solicita. Puede leer más sobre los generadores aquí. El siguiente programa calcula el cuadrado de cada número hasta 10000 usando comprensiones del generador.

squares_gen = (i*i for i in range(10_000))
# To print the size of a variable 
print(sys.getsizeof(squares_gen, "bytes"))
# Output
# 128

Esa es una diferencia bastante notable en el uso de la memoria. Ahora, intente obtener los números más grandes por su cuenta. ¡Vería una gran diferencia!

Consejo de bonificación

Usar operador interactivo «_»

Discutamos nuestro último consejo. Es una característica útil que no muchos de nosotros conocemos. Siempre que probamos una expresión o llamamos a una función, el resultado se envía a un nombre temporal, _ (un guión bajo). Entonces, demostremos esto.

2 + 3
# Output
# 5

Ahora, ejecute el siguiente código.

print(_)
# Output
# 5

¿Sorprendido por esto? Puede encontrar todos los trucos discutidos en un artículo en mi cuaderno de Python en Github.

Resumen

Eso completa la discusión de hoy. En este artículo, aprendimos:

  • ¿Cómo hacer que los números grandes sean más legibles en código y salida (10000000 a 10,000,000)?
  • ¿Cómo tomar una contraseña como entrada de un usuario sin mostrarla realmente?
  • ¿Cómo utilizar los diccionarios para implementar los casos de interruptores?
  • ¿Cómo ahorrar memoria usando generadores?

Notas finales

¡Gracias por leer este artículo!

Espero que haya disfrutado leyendo este artículo y valga la pena dedicar sus 10 minutos.

¿Me perdí algo importante o quería compartir tus pensamientos? Comenta abajo y te responderé.

Sobre el Autor

Soy Harsh Dhamecha, un aspirante a científico de datos. Soy estudiante de último año de la carrera de Informática con especialización en Inteligencia Artificial. Un alumno motivado que está ansioso por ayudar a la comunidad de ciencia de datos tanto como pueda. Creo que el conocimiento es la moneda del siglo XXI y me encanta compartirlo.

Si tiene alguna consulta, puede directamente Email yo o conéctate conmigo en LinkedIn o Gorjeo para la colaboración en proyectos.

Si encuentra este artículo informado y atractivo, también puede leer mis otros artículos.

¡Seguir leyendo! Un agradecimiento especial para ti 🙌

Los medios que se muestran en este artículo no son propiedad de DataPeaker y se utilizan a discreción del autor.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.