Python

Métodos y variables subrayadas en Python

En Python es habitual encontrar nombres de variables o métodos que comienzan o finalizan con uno o dos caracteres subrayado. Indicando que estos elementos son especiales. En esta entrada se va a explicar cual es el significado de los métodos y las variables subrayadas en Python.

Nombres que comienzan con un carácter de subrayado (_name)

Las variables y métodos cuyo nombre comienza con un subrayado indica que el elemento se ha escrito únicamente para uso interno en las clases. Esto es una convención que se define en PEP 8 y no afecta al comportamiento del programa. Siendo solamente una ayuda para los programadores a la hora de leer el código. Esto es así ya que, en Python, a diferencia de otros leguajes como C++ o Java, no existen diferencias entre las variables privadas o públicas.

Nombres que finalizan con un carácter de subrayado (name_)

Las palabras reservadas de Python no se pueden utilizar para dar nombre a una variable. Por ejemplo, no se puede llamar a una variable def o class. Si creemos que el mejor nombre para una variable es el de una palabra reservada en PEP 8 se recomienda usarla añadiendo el carácter subrayado al final de nombre. Así se pueden definir variables cuyo nombre sea def_ o class_. Al igual que el caso de los nombres que comienzan por subrayado esto es solamente una convención.

Nombres que comienzan con dos caracteres de subrayado (__name)

A diferencia de los casos vistos hasta ahora, los nombres que comienza por dos caracteres de subrayado si que son interpretados por Python. En este caso el intérprete de Python cambia el nombre del atributo para evitar conflictos de nombres en el caso de que se definan clases heredadas. Un proceso que conoce como “name mangling”.

Nombres que comienzan y finalizan con dos caracteres de subrayado (__name__)

Los nombres que comienzan y finalizan con dos caracteres de subrayado están reservados para usos especiales en el leguaje. Por ejemplo, __init__ para los constructores de los objetos o __call__ para hacer que un objeto sea invocable. Métodos que en muchas ocasiones se llaman “métodos mágicos” (“magic methods”), aunque no exista ninguna magia detrás de ellos.

Lo mejor es evitar el uso de estos nombres para evitar problemas en futuras versiones de Python.

El cambio de nombre que hace el intérprete de Python para los nombres que comienzan con dos caracteres de subrayado no se realiza en este caso.

El carácter subrayado (_)

Finalmente, también es posible encontrar el carácter subrayado como nombre de una variable en Python. Un nombre que se usa por convención para indicar que la variable es temporal. Por ejemplo, en bucles for donde no se utiliza el valor sobre el que itera o al desempaquetar objetos en variables.

El carácter subrayado también se usa en las sesiones interactivas de Python para obtener el último resultado. Algo que puede ser útil en diferentes situaciones.

Conclusiones

En esta entrada se ha visto el significado de los nombres de métodos o variables subrayadas en Python. En algunos casos solamente son una convención para hacer un el código más legible. Aunque en otros casos si que son tenidos en cuenta por el interprete de Python.

Imágenes: Pixabay (sandid)

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

Curiosidad: El “bug”, la polilla y la leyenda de Grace Hopper

Cualquiera que programe usa la palabra bug a diario para referirse a un fallo en…

3 días ago

BG/BB: el modelo de CLV para compras en períodos discretos

Los dos artículos anteriores de la serie cubrieron BG/NBD, el modelo para negocios donde el…

5 días ago

Por Qué las Contraseñas Largas son más Seguras que las Complejas

"Tu contraseña debe tener al menos 8 caracteres, una mayúscula, un número y un símbolo…

1 semana ago

Gini, KS y AUC: Cómo Medir la Calidad de un Modelo de Credit Scoring

Cuando un analista de riesgo presenta un nuevo scorecard ante el comité de dirección, la…

2 semanas ago

Curiosidad: De dónde vienen foo, bar y foobar

Si revisáis código o documentación de otros programadores, tarde o temprano os toparéis con dos…

2 semanas ago

BG/NBD + Gamma/Gamma: el modelo probabilístico para CLV en compras continuas

Los dos artículos anteriores cubrieron el CLV clásico —una fórmula útil pero que trata a…

3 semanas ago

This website uses cookies.