logo

__nombre__ en Python

El nombre del script o módulo de Python que se está ejecutando actualmente se almacena en la variable especial __name__ de Python. Python 3.0 introdujo la variable __name__, que está ausente en Python 2. x. El valor del módulo o secuencia de comandos de Python actual, __main__, se asigna a la variable __name__ mientras se ejecuta.

¿Qué significa _nombre_?

Python tiene una variable incorporada llamada __name__ que almacena el nombre del script o módulo que se está ejecutando actualmente. El nombre del script o del módulo se almacena en la variable __name__ a menos que el módulo actual se esté ejecutando, en cuyo caso se le asigna el valor __main__.

En consecuencia, cuando se ejecuta un script de Python, el valor de su variable __name__ siempre debe ser __main__ si se importa a otro script de Python. De lo contrario, aparecería el nombre del módulo.

Ejemplo :

Para comprender mejor esto, usemos un ejemplo. Hacer una script en Python llamado testing.py, y añádele el siguiente código:

 # Code to define a function def anything(): print('Value of the __name__ : ', __name__) anything() 

Producción:

 Value of the __name__ : __main__ 

Explicación:

El script se ejecuta inmediatamente como programa principal, como lo indica el resultado 'Valor del nombre: main'. En Python, el valor de la variable __name__ del script se establece automáticamente en '__main__' cuando el script se ejecuta directamente. Este resultado confirma que el script se está ejecutando directamente en lugar de importarse como un módulo a otro script.

Ahora construyamos otro script de Python llamado mains.py e importar el anterior en él.

Ejemplo :

 # importing testing.py import testing testing.anything() 

Producción:

 Value of the __name__ : testing 

Explicación:

pruebas. any() es el método que se ejecuta cuando el script testing.py se importa a otro script de Python mediante la prueba de importación. En esta situación, el nombre del módulo, en este caso 'testing', se establece como el valor de la variable __name__ en testing.py en lugar de '__main__'. Por este motivo, el resultado de las pruebas. cualquier cosa() es 'Valor de __nombre__: prueba'. Esto ilustra cómo ejecutar el script directamente versus importarlo como módulo afecta el valor de la variable __name__.

Usando la condición if name == main :

Usamos el si declaración y la condición __nombre__ == __principal__ declarar que cierto código Python sólo debería ser se realiza cuando el script se ejecuta directamente .

Ejemplo :

 # importing testing.py import testing if __name__ == __main__: testing.anything() 

En este caso, la capacidad del módulo o script actual para ejecutarse de forma independiente se determina utilizando la cadena __main__. Para indicarle al intérprete de Python que una palabra clave en la variable __name__ está reservada o es especial, hay dos guiones bajos a cada lado del término.

Ejemplo de código para nombre en Python:

Como se dijo antes, cuando ejecutamos un archivo de código, el código se ejecuta directamente (ni siquiera se importa a otro archivo) y, como resultado, el valor de la variable __name__ cambia a __main__.

 # defining a function def anything(): print('It is a function in the ScriptP1.') if __name__=='__main__': anything() print('Called from the ScriptP1.') else: print('ScriptP1 is imported into another file.') 

Producción:

 It is a function in the ScriptP1. Called from the ScriptP1. 

Explicación:

La función any() especificada en el script ScriptP1 se ejecuta directamente como el programa principal, como se muestra en el resultado 'Es una función en ScriptP1'. seguido de 'Llamado desde ScriptP1'. Cuando el script se ejecuta directamente en Python, la variable __name__ se establece en '__main__'; en consecuencia, la condición if __name__=='__main__': se evalúa como True, llamando a la función cualquier cosa(). La declaración de impresión que sigue verifica que el script se esté ejecutando directamente.

Ahora, creemos un nuevo archivo de secuencia de comandos de Python llamado ScriptP2.py, importemos ScriptP1.py en él e intentemos llamar al método ScriptP1 cualquier cosa().

Código: El ScriptP2.py El código se proporciona aquí:

convertir cadena a int en java
 import ScriptP1 if __name__=='__main__': ScriptP1.anything() print('Called from the ScriptP2.') 

Producción:

 ScriptP1 is imported into another file. It is a function in the ScriptP1. Called from the ScriptP2. 

Explicación:

El script Python proporcionado muestra cómo importar el módulo 'ScriptP1' al script activo. El método 'cualquier cosa()' está presente en 'ScriptP1' y se llama en el script principal. Se llama a esta función y el script genera 'Llamado desde ScriptP2'. para indicar que la llamada a la función se ha completado. Este flujo de eventos indica que la función especificada en 'ScriptP1' fue accesible y se realizó correctamente en el contexto del script que se está ejecutando ahora, que se identifica como 'ScriptP2'.

Cuando la declaración de importación para ScriptP1 se ejecutó dentro de ScriptP2, la variable __name__ tenía el valor ScriptP1 (el nombre del módulo); pero, dado que ScriptP2 fue el primer script que se ejecutó, ahora tendrá el valor __main__.

Imprimiendo el valor de __name__ :

Imprimamos el valor de la variable __name__ en cada etapa de ejecución para ayudarlo a comprenderlo mejor.

Ejemplo : El código fuente del script Python ScriptP1.py se proporciona a continuación:

 print('Value or the variable __name__ : ' + __name__) 

Producción:

 Value or the variable __name__ : __main__ 

Explicación:

La muestra de código Python que se proporciona genera el valor de la variable __name__, que, cuando el script se ejecuta directamente, se evalúa como 'principal'. Significa que cuando el script se inicia directamente, el bloque de código que viene después de la condición if __name__ == '__main__': se ejecutará en lugar de importarse como un módulo a otro script. Este tipo de comportamiento se utiliza con frecuencia para distinguir entre ejecutar un script como aplicación principal e importarlo a otro script como módulo.

Ejemplo 2: Y aquí está el código fuente del script ScriptP2.py:

 # importing the file ScriptP1.py import ScriptP1 print('Value or the variable __name__ : ' + __name__) 

Producción:

 Value or the variable __name__ : __main__ 

Explicación:

El script de Python proporcionado utiliza la declaración de importación para importar el archivo 'ScriptP1.py. ' Cuando se ejecuta, 'principal' se imprime como el valor de la variable __nombre__. Esto significa que, en lugar de importarse como un módulo a otro script, el script se ejecuta directamente como la aplicación principal. Al ejecutar scripts de Python, este es el comportamiento habitual; El contexto de ejecución del script se refleja en la variable __name__.

Resumen :

En la mayoría de los lenguajes de programación, el método o función principal suele utilizarse como punto en el que se ejecuta cualquier programa. Pero ¿qué pasa con Python? La ejecución de un programa Python (script) normalmente comienza en la línea cero o en el nivel de sangría 0 del programa. Sin embargo, la creación de una variable __name__ ocurre antes de que se ejecute un programa Python. Esta variable podría usarse para reemplazar el método principal en Python.