Underscore: Lo que todo programador debe saber

underscore

Underscore: Algo que todo programador Python debe saber

Underscore & Dunder. Python tiene tantas características asombrosas pero desconocidas que incluso conocer algunas de ellas puede ponerlo en la liga de los programadores avanzados.


En esta publicación, discutiré los cinco patrones de underscore disponibles en Python y cómo afectan el comportamiento de los programas de Python.

Los underscore simples y dobles tienen un significado en los nombres de métodos y variables de Python. Parte de ese significado es simplemente por convención y pretende ser una sugerencia para el programador, y parte del intérprete de Python lo impone.

 

1. Underscore principal único: _var

Python no tiene una fuerte distinción entre variables “privadas” y “públicas” como lo hace Java. Por lo tanto, para indicar que una variable está destinada a uso interno, se utiliza un único underscore (prefijo) antes del nombre de la variable.

underscore

Si usa un underscore (guión bajo) al principio en el nombre de la variable, generalmente el intérprete de Python no lo aplica y solo es una sugerencia para el programador. Es como transmitir a otros programadores: “Hey, esto no debe usarse fuera de la interfaz de esta clase. ¡Mejor déjalo en paz!”

Los guiones bajos iniciales se pueden utilizar para definir nombres de métodos o funciones privadas.

underscore

No se podrá acceder a una función privada en un módulo si se importa como comodín. No se preocupe, la importación normal funcionará.

underscore

 

2. Underscore final único: var_

¿Qué sucede si necesita usar una palabra clave para un nombre?

Agregue un guión bajo (sufijo) después de los nombres de variables, funciones o clases, ¡y listo! Evita los conflictos de nombres con las palabras clave de Python.

underscore

 

3. Principales Dunders: __var

“Dunders” significa guiones bajos dobles.
Se puede usar un prefijo de subrayado doble en Python para evitar conflictos de nombres en subclases.

underscore

Echemos un vistazo a los atributos de este objeto usando la función incorporada dir():

underscore

¿Notó el primer elemento de la lista de directorios? -> ‘_Pubber__address

A esto se le llama manipulación de nombres. El intérprete de Python cambia el nombre de la variable de una manera que dificulta la creación de colisiones cuando se extiende la clase. Lo cambia a: _ClassName__VariableName

Ahora veamos cómo se comporta esta variable.

underscore

No se preocupe, aún puede acceder a él:

underscore

¿La alteración de nombres también se aplica a los nombres de métodos? Seguro que sí, ¡pruébalo!

Ahora, esto te va a sorprender:

¡Woohoo! _Pubber__address se declaró como una variable global, pero cuando se declaró dentro del contexto de una clase, pude hacer referencia a ella como está. ¿Cómo? Debido a la alteración de nombres.

 

4. Dunders principales y finales: __var__

Los nombres que tienen guiones bajos dobles al principio y al final están reservados para un uso especial en el idioma y, en ocasiones, se denominan “métodos especiales” o “métodos mágicos”.

Hay cerca de 100 Dunders incorporados en Python, como __init__ para constructores de objetos o __call__ para hacer que los objetos sean invocables.

Python no le prohíbe usar nombres que comiencen y terminen con underscore doble en sus propios programas, pero se recomienda evitarlos, ya que pueden chocar con futuros cambios en el lenguaje Python.

 

5. Underscore único: _

Por último, pero no menos importante, utilice un solo subrayado independiente como nombre para indicar que una variable es temporal o insignificante.

También puede usar underscore simple para descomprimir expresiones como una variable “no me importa” para ignorar valores particulares.

A veces, al descomponer una tupla en variables independientes, solo le interesan los valores de algunos campos específicos. Por lo tanto, puede usar “_” para los campos que no le interesan.

Además de su uso como variable temporal, “_” es una variable especial en la mayoría de los REPL de Python (Python Interactive Shell) que representa el resultado de la última expresión evaluada por el intérprete.

Espero que ahora te guste aún más este maravilloso lenguaje de programación y lo uses al máximo.

¡Feliz codificación con Python!