¿Por qué usamos if __name__ == '__main__' en Python?

13 feb 2024 2 min di lettura
¿Por qué usamos if __name__ == '__main__' en Python?
Indice dei contenuti

Introducción

Python, conocido por su simplicidad y legibilidad, esconde un pequeño fragmento de código que, a pesar de su frecuente aparición en scripts de todo el mundo, a menudo deja perplejos a los recién llegados: if __name__ == '__main__':. Esta línea, lejos de ser un simple estándar, es una construcción poderosa que proporciona control sobre la ejecución de su código. Desmitifiquemos este secreto y descubramos el poder y el propósito detrás de él.

Entendiendo __nombre__

Para comprender la importancia de if __name__ == '__main__': primero debemos entender qué significa __name__ en Python. Cada módulo en Python tiene un atributo incorporado llamado __name__. El valor de __name__ se establece en '__main__' cuando el módulo se ejecuta como programa principal. De lo contrario, el valor de __name__ se establece en el nombre del módulo. Esta distinción es crucial para comprender la funcionalidad habilitada por esta declaración condicional.

El propósito de if __name__ == '__main__'

El uso principal de if __name__ == '__main__': es controlar la ejecución del código. Al escribir un script de Python, es posible que desee que se ejecute cierto código cuando el script se ejecuta directamente, pero no cuando se importa como un módulo a otro script. Aquí es donde entra en juego if __name__ == '__main__': Le permite distinguir entre los dos escenarios, lo que permite un caso de uso dual para sus archivos Python: como módulos reutilizables o como scripts independientes.

Casos de uso y beneficios

  • Código reutilizable: al encapsular código que solo debe ejecutarse cuando el script se ejecuta directamente dentro de este condicional, hace que su script sea reutilizable como un módulo. Otros scripts pueden importar funciones, clases o variables sin ejecutar código a nivel de script.
  • Pruebas y depuración: esta plantilla es increíblemente útil para realizar pruebas. Puede incluir código de prueba en el script que ejecuta las pruebas cuando el script se ejecuta directamente. Esto significa que puede probar funciones en el mismo archivo, manteniendo las pruebas cerca de su código.
  • Puntos de entrada del script: para aplicaciones o paquetes más grandes, if __name__ == '__main__': sirve como un punto de entrada claro. Los demás desarrolladores tienen inmediatamente claro dónde encontrar la lógica principal del script o qué parte del código desencadena la ejecución.

Ejemplo práctico

Entendamos la diferencia con un ejemplo práctico:

Crear script: considere un script de Python simple llamado script.py:

def greet(name):
 print(f"Hello, {name}!")

 greet("Alice")

 if __name__ == "__main__":
 print("The script is run directly")

Ejecutar script: cuando ejecutamos script.py directamente usando python script.py, el resultado será:

Hello, Alice!
 The script is run directly

El bloque if __name__ == "__main__": se ejecuta porque __name__ se establece en "__main__" cuando el script se ejecuta directamente.

Importar script a otro: Ahora ingresemos import script.py en otro script de Python llamado main.py:

import script

Ejecute un nuevo script: cuando ejecutamos main.py usando python main.py, el resultado será:

Hello, Alice!

Esta vez, el bloque if __name__ == "__main__": en script.py no se ejecuta. El motivo es __name__ que está configurado en "script", el nombre del script cuando se importa, no "__main__".

Conclusión

La construcción if __name__ == '__main__': es un testimonio de la flexibilidad de Python, permitiendo que los scripts sean tanto módulos reutilizables como programas independientes. Al comprender y utilizar este patrón, los desarrolladores pueden escribir código más modular, comprobable y mantenible. Esta pequeña línea de código revela un aspecto importante de la programación en Python, lo que demuestra que incluso las características aparentemente más crípticas tienen propósitos profundos. Acéptalo y descubrirás que tu código Python no sólo es más potente, sino también más versátil.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.