logo

__nom__ a Python

El nom de l'script o mòdul Python que s'executa actualment s'emmagatzema a la variable especial __name__ de Python. Python 3.0 va introduir la variable __name__, que està absent de Python 2. x. L'script Python actual o el valor del mòdul, __main__, s'assigna a la variable __name__ mentre s'està executant.

Què significa _nom_?

Python té una variable integrada anomenada __name__ que emmagatzema el nom de l'script o mòdul que s'està executant actualment. L'script o el nom del mòdul s'emmagatzema a la variable __name__ tret que el mòdul actual s'està executant, en aquest cas se li assigna el valor __main__.

En conseqüència, quan s'està executant un script Python, el valor de la seva variable __name__ sempre hauria de ser __main__ si s'importa a un altre script Python. Si no, apareixerà el nom del mòdul.

Exemple:

Per entendre-ho millor, utilitzem un exemple. Fer una script en Python anomenat testing.py, i afegiu-hi el codi següent:

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

Sortida:

 Value of the __name__ : __main__ 

Explicació:

L'script s'executa immediatament com a programa principal, tal com indica la sortida 'Valor del nom: principal'. A Python, el valor de la variable __name__ de l'script s'estableix automàticament en '__main__' quan l'script s'executa directament. Aquesta sortida confirma que l'script s'està executant directament en lloc d'importar-lo com a mòdul a un altre script

Creem ara un altre script Python anomenat mains.py i importar-hi l'anterior.

Exemple:

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

Sortida:

 Value of the __name__ : testing 

Explicació:

provant. any() és el mètode que s'executa quan l'script testing.py s'importa a un altre script de Python mitjançant proves d'importació. En aquesta situació, el nom del mòdul, en aquest cas 'test', s'estableix com el valor de la variable __name__ a testing.py en lloc de '__main__'. Per aquest motiu, la sortida de les proves. any() és 'Valor del __nom__: prova'. Això il·lustra com l'execució de l'script directament en comparació amb la importació com a mòdul afecta el valor de la variable __name__.

Utilitzant la condició if name == principal :

Fem servir el declaració si i la condició __nom__ == __principal__ per declarar això cert codi Python només hauria de ser es realitza quan l'script s'executa directament .

Exemple:

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

En aquest cas, la capacitat del mòdul o script actual d'executar-se de manera independent es determina mitjançant la cadena __main__. Per indicar a l'intèrpret de Python que una paraula clau de la variable __name__ és reservada o especial, hi ha dos guions baixos a banda i banda del terme.

Exemple de codi per al nom en Python:

Com s'ha dit abans, quan executem un fitxer de codi, el codi es realitza directament -ni tan sols s'importa a un altre fitxer- i, com a resultat, el valor de la variable __name__ canvia 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.') 

Sortida:

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

Explicació:

La funció any() especificada a l'script ScriptP1 s'està executant directament com a programa principal, tal com mostra la sortida 'És una funció a l'ScriptP1'. seguit de 'Called from the ScriptP1'. Quan l'script s'executa directament a Python, la variable __name__ s'estableix a '__main__'; en conseqüència, la condició if __name__=='__main__': s'avalua com a True, cridant la funció any(). La instrucció d'impressió que segueix verifica que l'script s'està executant directament.

descarregar vídeo de youtube vlc

Ara, anem a fer un nou fitxer d'script de Python anomenat ScriptP2.py, importem-hi ScriptP1.py i intentem cridar el mètode ScriptP1 any().

Codi: El ScriptP2.py el codi es proporciona aquí:

 import ScriptP1 if __name__=='__main__': ScriptP1.anything() print('Called from the ScriptP2.') 

Sortida:

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

Explicació:

L'script de Python proporcionat mostra com importar el mòdul 'ScriptP1' a l'script actiu. El mètode 'qualsevol ()' està present a 'ScriptP1' i s'anomena a l'script principal. Aquesta funció s'anomena i l'script mostra 'Called from the ScriptP2'. per indicar que la trucada de funció s'ha completat. Aquest flux d'esdeveniments indica que la funció especificada a 'ScriptP1' era accessible i es va realitzar correctament en el context de l'script que s'està executant, que s'identifica com 'ScriptP2'.

Quan la instrucció d'importació per a ScriptP1 es va executar dins de ScriptP2, la variable __name__ tenia el valor ScriptP1 (el nom del mòdul); però, com que ScriptP2 va ser el primer script que es va executar, ara tindrà el valor __main__.

Impressió del valor de __name__:

Imprimim el valor de la variable __name__ a cada etapa d'execució per ajudar-vos a entendre-la millor.

Exemple: El codi font de l'script Python ScriptP1.py es proporciona a continuació:

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

Sortida:

 Value or the variable __name__ : __main__ 

Explicació:

La mostra de codi Python que es proporciona dóna el valor de la variable __name__, que, quan l'script s'executa directament, s'avalua com a 'main'. Significa que quan l'script s'inicia directament, el bloc de codi que ve després de la condició if __name__ == '__main__': s'executarà en lloc d'importar-se com a mòdul a un altre script. Aquest tipus de comportament s'utilitza sovint per distingir entre executar un script com a aplicació principal i importar-lo a un altre script com a mòdul.

Exemple 2: I aquí teniu el codi font de l'script ScriptP2.py:

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

Sortida:

 Value or the variable __name__ : __main__ 

Explicació:

L'script de Python proporcionat utilitza la instrucció d'importació per importar el fitxer 'ScriptP1.py. Quan s'executa, s'imprimeix 'main' com el valor de la variable __name__. Això vol dir que en lloc d'importar-se com a mòdul a un altre script, l'script s'està executant directament com a aplicació principal. Quan s'executen scripts de Python, aquest és el comportament habitual; el context d'execució de l'script es reflecteix a la variable __name__.

Resum:

En la majoria dels llenguatges de programació, el mètode o funció principal s'utilitza normalment com el punt en què es realitza qualsevol programa. Però què passa amb Python? L'execució d'un programa de Python (script) normalment comença a la línia zero o al nivell de sagnat del programa 0. Tanmateix, la creació d'una variable __name__ es produeix abans que s'executi un programa Python. Aquesta variable es pot utilitzar per substituir el mètode principal a Python.