3 Trucos De Python Que Mejorarán Tu Código

Roman Orac
Aug 10, 2021

3 Trucos De Python Que Mejorarán Tu Código

Aug 10, 2021 3 minutes read

Llevo más de 10 años codificando en Python. Hubo un tiempo en el que pensé que lo sabía todo, lo que era una clara señal de que me estaba volviendo complaciente.

Entonces decidí investigar un poco sobre las mejoras de Python. Esas versiones 3.6, 3.7, 3.8 de Python no están ahí por nada, ¿verdad?

Después de revisar las notas de la versión, encontré estos trucos que me gustaría compartir con ustedes.

Al leer este artículo, aprenderás:
  • Cómo formatear enteros grandes de forma más clara
  • Una mejor manera de trabajar con las rutas de los archivos
  • La forma correcta de formatear cadenas


1. Formateo de big integers


Using Underscores in Numeric Literals. Image by Roman Orac

A partir de la versión 3.6 de Python se pueden utilizar guiones bajos para facilitar la lectura de los números. Ver PEP 515 para más detalles.

Veamos un ejemplo:

a = 1000000000
# Is variable a billion or 100 millions?
# Let's use underscores to make it easier to read
a = 1_000_000_000
# You can group numbers as you like
b = 1_0_9_0

También funciona con direcciones hexadecimales y bits de agrupación.

# grouping hexadecimal addresses by words
addr = 0xCAFE_F00D
# grouping bits into nibbles in a binary literal
flags = 0b_0011_1111_0100_1110

2. Pathlib



Trabajar con rutas puede ser un reto, especialmente si tu código necesita ejecutarse en múltiples sistemas operativos.

Por suerte para nosotros, la biblioteca estándar de Python tiene pathllib.

Veamos un ejemplo:

from pathlib import Path
path = Path("some_folder")
print(path)
# output: some_folder
# We can add more subfolders in a readable way
path = path / "sub_folder" / "sub_sub_folder"
print(path)
# output: some_folder/sub_folder/sub_sub_folder
# make path absolute
print(path.resolve())
# output: /Users/r.orac/some_folder/sub_folter/sub_sub_folder

A pesar de utilizar el signo / como separador para concatenar rutas, pathlib lo hace agnóstico al sistema operativo, lo que significa que también funcionará en el sistema operativo Windows.

Lea también: Usando Python y Pandas Datareader Para Analizar Datos Financieros

3. Simplificar el formato de las cadenas



Formato de cadenas f en Python. Imagen de Roman Orac

Estoy acostumbrado a utilizar el formato de cadena de la vieja escuela en Python:

person = 'Roman'
exercise = 0
print("%d-times %s exercised during corona epidemic" % (exercise, person))
# output
# 0-times Roman exercised during corona epidemic

Hasta hace poco, no sabía que había una forma mejor (más moderna) de formatear cadenas en Python.

En Python 3.6, PEP 498 introduce la Interpolación Literal de Cadenas, que simplifica el formato de las cadenas.

Podemos reescribir el ejemplo anterior a:

person = 'roman'
exercise = 0
print(f"{exercise}-times {person} exercised during corona epidemic")
# output
# 0-times Roman exercised during corona epidemic

Una cadena prefijada con f se conoce como fstring.

Las cadenas f admiten incluso operaciones matemáticas:

print(f"{exercise+1}-times {person} exercised during corona epidemic")
# Output
# '1-times roman exercised during corona epidemic'

Pero no hice el ejercicio durante la epidemia de la corona por lo que añadir +1 en la fstring sería simplemente una mentira 😂

¿Qué pasa con el formato de los valores flotantes?

f = 0.333333
print(f"this is f={f:.2f} rounded to 2 decimals")
# Output
this is f=0.33 rounded to 2 decimals

Conclusión


Estos trucos de Python harán que tu código sea más conciso y que la codificación sea más agradable.

Muchos desarrolladores de Python no conocen estos trucos - tú ya no eres uno de ellos.

Antes de irte

Sígueme en  Twitter, donde tuiteo regularmente sobre Ciencia de Datos y Aprendizaje Automático.

Lea también: Entendiendo El Módulo Collections de Python
Join our private community in Discord

Keep up to date by participating in our global community of data scientists and AI enthusiasts. We discuss the latest developments in data science competitions, new techniques for solving complex challenges, AI and machine learning models, and much more!