Sentencia if __name__ == ‘__main__’ en Python: guía para principiantes

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.

@@-VOID-2@@
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

5. Precauciones y mejores prácticas

Precauciones

  1. 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.
  2. 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

  1. 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.
  2. 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.

侍エンジニア塾