1. Introducción
En los programas de Python, la construcción 「ifname== ‘main‘」 es una función importante para determinar cómo se ejecutó el script. Al utilizar esta construcción, es posible que el mismo código tenga un comportamiento diferente cuando se ejecuta «directamente» y cuando se importa desde otro script.
Comprender correctamente esta funcionalidad mejora la reutilización y el mantenimiento del código, y permite una depuración y pruebas más eficientes. En este artículo, explicaremos en detalle el papel, el uso y los beneficios de esta construcción, acompañados de ejemplos de código concretos.
2. Comprensión básica de name y main en Python
Variable especial name de Python
When a Python program is executed, several special variables are automatically generated. __name__
is also one of them, a variable that stores the name of the file (module) being executed. Usually, the __name__
variable indicates “from which module the program was executed”.
Nota: Diferencia entre módulo y script
Módulo: archivo que contiene código Python, diseñado para ser importado y utilizado por otros archivos.
Script: archivo Python destinado a ejecutar un programa, normalmente no se importa desde otros archivos sino que se ejecuta directamente.
Ejemplo: comportamiento de name
For example, suppose there is a file example.py
with the following contents.
# example.py
print(__name__)
If this file is executed directly, the value of __name__
becomes '__main__'
, and the terminal displays the following.
__main__
On the other hand, when this file is imported from another file, the value of __name__
is set to the filename 'example'
, and it is no longer __main__
. Thus, in Python, the value of __name__
changes depending on how the script is executed.
¿Qué es main?
The Python interpreter assigns a special name “__main__
” to the file being executed. This allows a Python program to verify that the script is being run directly through “__main__
”.

3. Uso concreto de if name == ‘main‘
Al usar la sintaxis 「ifname== ‘main‘」, se puede ejecutar un código específico solo cuando el script de Python se ejecuta directamente. Esta sintaxis es muy útil para controlar mejor el comportamiento del código.
Sintaxis básica
if __name__ == '__main__':
# El código solo se ejecuta cuando el script se ejecuta directamente
print("Este script se está ejecutando directamente.")
Ejemplo concreto
A continuación se muestra un código que usa el archivo calculate.py
como ejemplo. Este archivo contiene funciones y una sentencia condicional.
# calculate.py
def add(a, b):
return a + b
if __name__ == '__main__':
result = add(3, 4)
print("Resultado de cálculo:", result)
Resultado de la ejecución
Al ejecutar este archivo directamente, se muestra el siguiente resultado.
Resultado de cálculo: 7
Por otro lado, si se importa este módulo calculate
desde otro archivo, el código a continuación if __name__ == '__main__'
no se ejecutará. A continuación se muestra un ejemplo de uso importándolo desde otro archivo main_script.py
.
# main_script.py
import calculate
# Al importar, la sección bajo if __name__ == '__main__' en calculate.py no se ejecuta
print(calculate.add(10, 5)) # Se imprimirá 15
De esta manera, al usar la sintaxis 「ifname== ‘main‘」, se puede confirmar que el script se comporta de forma diferente cuando se ejecuta directamente y cuando se importa desde otro script.
4. Ventajas de usar esta sintaxis
1. Mejora de la reutilización de módulos
Al usar 「ifname== ‘main‘」 se mejora la reutilización de módulos. Al impedir que se ejecute código innecesario cuando el módulo se importa, se puede controlar que solo se invoquen las partes necesarias, lo que aumenta la mantenibilidad del código.
2. Facilita las pruebas
Al colocar código de prueba y código de depuración dentro de if __name__ == '__main__'
, se pueden realizar pruebas fácilmente durante el desarrollo. Como el código de prueba no se ejecuta cuando el módulo se importa, la depuración se puede llevar a cabo de manera eficiente.
Ejemplo de código de prueba
Intentemos añadir un código de prueba sencillo a calculate.py
.
# calculate.py
def add(a, b):
return a + b
if __name__ == '__main__':
# Código de prueba
print("3 + 4 =", add(3, 4))
print("10 + 5 =", add(10, 5))
De esta manera, al hacer que las pruebas simples solo se ejecuten cuando el script se ejecuta directamente, el módulo no ejecutará pruebas cuando sea importado por otro código, y solo se utilizarán las funciones necesarias.
5. Precauciones y mejores prácticas
Precauciones
- Mejorar la claridad del código
if __name__ == '__main__'
Al colocar el código de prueba y el código de ejecución a continuación, clarifiquemos los roles dentro del archivo. Al asegurarnos de que las partes que no deben ejecutarse al importar estén dentro de una condición, evitamos que código innecesario se ejecute por error. - Cuidado con las importaciones circulares
if __name__ == '__main__'
Cuando el código que utiliza hace que varios archivos se importen mutuamente, es necesario prestar atención para que no se produzcan importaciones circulares. Si las dependencias entre módulos se vuelven complejas, el riesgo de importaciones circulares aumenta, por lo que se debe intentar mantener las dependencias simples.
Mejores prácticas
- Incluir código de prueba en la sección main
if __name__ == '__main__'
Al colocar código de prueba dentro de ella, se evita la ejecución innecesaria cuando el módulo es importado por otro código. Si se asegura de que las pruebas solo se ejecuten cuando el módulo se ejecuta directamente, se previenen comportamientos no deseados. - Agrupar varias funciones
if __name__ == '__main__'
Dentro de ella, al llamar a las funciones según sea necesario, el código no se alarga, mejora su claridad y facilita el mantenimiento.
6. Summary
「ifname== ‘main‘」 es una sintaxis práctica para determinar cómo se ha ejecutado un script en Python. Al usar esta sintaxis, se puede configurar para que el código se ejecute solo cuando el script se ejecuta directamente, lo que mejora la reutilización como módulo y facilita las pruebas.
Al programar en Python, aproveche esta sintaxis de manera eficaz y separe adecuadamente los scripts y los módulos para mejorar la mantenibilidad y la reutilización del código.