Uso del guion bajo en Python



@eduardo_gpg

Número de visitas 2933

Tiempo de lectura 3 min

10 Mayo 2022

En Python, un carácter el cual creo subestimamos mucho, o por lo menos pasamos por alto, es sin duda el guion bajo (_). Este carácter es muy importante en el lenguaje, y es probable que, sin darte cuenta, ya lo hayas utilizando o simplemente te hayas topado con él.

Es por ello que, en este nueva entrega de PyWombat, me gustaría habláramos de los diferentes escenarios donde es posible implementar el guion bajo (_). Esto para sacarle el máximo provecho posible.

Será un post lleno de curiosidades, así que te invito a que te quedes.

Bien, sin más introducción, pongamos manos a la obra. 😎

Omitir valores

Del primer escenario donde podemos utilizar el guion bajo es para omitir valores.

Verás, en Python, siempre que no deseemos almacenar algún valor en una variable, y simplemente queramos pasar de él, haremos uso del guion bajo.

Veamos un par de ejemplos.

Imaginemos el siguiente escenario, donde debemos ejecutar un bloque de código una N cantidad de veces. Por ejemplo, imprimamos en consola Hola mundo 10 veces. Para ello podemos usar el ciclo foreach.

for x in range(0, 10):
    print('Hola')

En este caso, por cada iteración, la variable x toma un valor de la colección (0,1,2,3...).

En primera instancia podemos concluir que el código esta bien, este cumple con su cometido, sin embargo, si inspeccionamos más a fondo el código podremos percatarnos que la variable x nunca es usada dentro del ciclo, por lo tanto no tiene mucho sentido crearla. 😦

Para solventar este problema podemos hacer uso del guion bajo (_). 🤓

for _ in range(0, 10):
    print('Hola')

Con esto evitamos crear una variable que nunca usaremos. Haciendo nuestro código mucho más eficiente.

Otro escenario puede ser al momento de desempaquetar tuplas.

Por ejemplo, si queremos desempaquetar el primer, segundo y último elemento (Excluyendo todos los demás) haremos uso del guion bajo.

first, second, *_, last = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

Placeholder

Si nos encontramos trabajando en el shell de Python podemos utilizar el guion bajo como placeholder, pudiendo acceder al último valor generado.

Esto sin duda puede sernos de mucha utilidad para agilizar nuestro proceso de desarrollo.

Ejemplos.

>>> 10 + 20
30

>>> _ + 40
70

>>> _ + 30
100

¡Bastante cool no lo crees? 🐍

Que por cierto, hablando del shell de Python, recuerda que en PyWombat tenemos un post donde le sacamos el máximo provecho al shell utilizando iPython.

Namespace

Como sabemos, en Python existen palabras reservadas que no podemos utilizar como nombre de variables, clases, métodos o funciones, sin embargo habrá ocasiones en las cuales nos quedemos sin ideas para nombrar a nuestros objetos (Bueno, por lo menos a mi me pasa). 😛

Para evitar conflictos con el interprete y el namespace podemos hacer uso el sufijo guion bajo (_); evitando así hacer uso de una palabra reservada como tal.

type_ = 'String'
class_ = 'User'

Que por cierto, si quieres conocer todas las palabras reservadas del lenguaje te comparto el siguiente tip.

Atributos privados

De los atributos privados en Python ya hemos hablado anteriormente. De hecho tenemos 3 post donde te explicamos este tema en detalle.

Te invito a que les eches un vistazo.

Pues bien, siguiendo con este post, en caso deseemos definir un atributo como "privado" haremos uso del doble guion bajo (__).

Ejemplo.

class User:
    def __init__(self):
        self.__password = ''

En este caso hemos definido que el atributo password deberá ser tratado como un atributo privado. Por lo tanto, si se intenta acceder a dicho atributo obtendremos un error.

>>> user = User()
>>> user.password
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'User' object has no attribute 'password'

En este caso Python realiza un mangled para ofuscar el atributo y que este no puede ser utilizado tan fácilmente fuera de la clase. Pero bueno, si quieres conocer más acerca de este funcionamiento te recomiendo lees los post antes mencionados.🐧

Dunder Methods

Siguiendo con el tema de clases, muchos de los métodos que podemos sobre escribir para nuestras clases comienzan, y finalizan, con el doble guion bajo (__).

Aquí un par de ejemplos.

class User:
    def __init__(self):
        pass

    def __len__(self):
        pass

    def __str__(self):
        pass

A estos métodos los conoceremos como Dunder methods, por su abreviación del ingles: __D__ouble __Under__socore methods.

Estos son métodos de la clase padre Object, los cuales fácilmente podremos sobre escribir.

De los Dunder methods sin duda estaremos hablando en una siguiente entrega. ⚡

Representación de números

Otra forma de usar el guion bajo es cuando deseamos expresar números grandes. Números con una gran cantidad de dígitos, los cuales puedan resultar un problema en cuanto a su lectura.

Pasamos de esto.

>>> 1000000000000

A esto.

>>> 1_000_000_000_000

Recordemos que en Python la legibilidad cuenta, así que el uso del guion bajo es obligatorio en estos casos. 🍻


¿El contenido te resulto de ayuda?

Para poder dejar tu opinión es necesario ser un usuario autenticado. Login

Más Tips y Ejercicios 🐍

Adquiere una subscripción PyWombat por tan solo $3 USD. al mes.

Conoce los beneficios de ser usuario premium:
Niveles desbloqueados: Ten accesos a todos los niveles de ejercicios. 🔓
Nuevo límite: Incrementa tu límite de ejercicios por semana. 🚀
Contenido único: Recibe semanalmente recursos exclusivos de Python (Videos, Artículos y Capitulos del libro PyWombat, comienza como desarrollador Python. 🐍