Python __name__ y __main__

A menudo vemos código de Python como el siguiente:

if __name__ == "__main__":
    main() 

En Python,__name__y__main__son dos variables especiales relacionadas con la ejecución de módulos y scripts.

__name__y__main__ se usa normalmente para controlar la forma de ejecución del código, especialmente cuando el módulo puede ejecutarse como script independiente o ser importado por otros módulos.

1. La variable __name__

__name__ es una variable incorporada que se utiliza para representar el nombre del módulo actual.

__name__ Su valor depende de cómo se utilice el módulo:

Cuando el módulo se ejecuta como programa principal:__name__el valor se establece en"__main__"。

Cuando el módulo se importa:__name__el valor se establece en el nombre de archivo del módulo (sin incluir.pyla extensión).

Supongamos que hay un archivo module.py:

print(f"模块的 __name__ 值: {__name__}")
La salida será:
模块的 __name__ 值: __main__

2. El significado de __main__

__main__es una cadena especial que se utiliza para indicar que el módulo actual se ejecuta como programa principal.

__main__Normalmente se usa junto con la variable __name__ para determinar si el módulo se importa o se ejecuta como script independiente.

3. Usoif __name__ == "__main__":de patrones comunes

En Python, una práctica común es agregar el siguiente bloque de código al final del módulo:

Ejemplo

if __name__ == "__main__":
    # Este código solo se ejecuta cuando el módulo se ejecuta como programa principal
    main()

Este patrón permite que el módulo no ejecute cierto código cuando es importado, y solo lo ejecute cuando se ejecuta como script independiente.


Ejemplo

Supongamos que tenemos un módulo llamado example.py:

Archivo del módulo example.py:

def greet():
    print("¡Saludos desde el módulo example!")

if __name__ == "__main__":
    print("El script se está ejecutando directamente.")
    greet()
else:
    print("El script se importa como módulo.")

Ejecutar example.py directamente

Si ejecutas example.py directamente, la salida será:

该脚本正在直接运行。
来自 example 模块的问候!

En este caso,__name__el valor es "__main__", así queif __name__ == "__main__": el código dentro del bloque se ejecutará.

Importar example.py

Si importas example.py en otro script, por ejemplo:

Ejemplo

# another_script.py

import example

example.greet()

La salida será:

该脚本作为模块被导入。
来自 example 模块的问候!

En este caso,__name__el valor es"example" (el nombre del módulo), así queif __name__ == "__main__":el código dentro del bloque no se ejecutará.

Resumen

  • __name__es una variable incorporada que representa el nombre del módulo actual.

  • Cuando el módulo se ejecuta como programa principal,__name__el valor es"__main__"。

  • Cuando el módulo se importa,__name__el valor es el nombre de archivo del módulo.

  • Usarif __name__ == "__main__":puede controlar que el módulo no ejecute cierto código cuando es importado, y solo lo ejecute cuando se ejecuta como script independiente.

Otras extensiones