logo

__name__ v Pythone

Názov skriptu alebo modulu Python, ktorý sa práve spúšťa, je uložený v špeciálnej premennej Pythonu __name__. Python 3.0 zaviedol premennú __name__, ktorá v Pythone 2 chýba. x. Aktuálny Python skript alebo hodnota modulu, __main__, je priradená k premennej __name__ počas jeho spustenia.

Čo znamená _name_?

Python má vstavanú premennú s názvom __name__, ktorá ukladá názov skriptu alebo modulu, ktorý sa práve vykonáva. Názov skriptu alebo modulu je uložený v premennej __name__, pokiaľ nie je spustený aktuálny modul, v takom prípade je mu priradená hodnota __main__.

V dôsledku toho, keď sa vykonáva skript Python, hodnota jeho premennej __name__ by mala byť vždy __main__, ak je importovaná do iného skriptu Python. Ak nie, zobrazí sa názov modulu.

Príklad:

Aby sme tomu lepšie porozumeli, použime príklad. Urob skript v Pythone s názvom testing.py, a pridajte k nemu nasledujúci kód:

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

Výkon:

čo je reproduktor
 Value of the __name__ : __main__ 

Vysvetlenie:

Skript je spustený okamžite ako hlavný program, čo naznačuje výstup 'Hodnota názvu: main.' V Pythone je hodnota premennej __name__ skriptu automaticky nastavená na '__main__', keď je skript spustený priamo. Tento výstup potvrdzuje, že skript sa spúšťa priamo a nie je importovaný ako modul do iného skriptu

Poďme teraz zostaviť ďalší skript Python s názvom mains.py a importovať do nej predchádzajúci.

Príklad:

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

Výkon:

 Value of the __name__ : testing 

Vysvetlenie:

testovanie. any() je metóda, ktorá sa spustí, keď sa skript testing.py importuje do iného skriptu Python pomocou testovania importu. V tejto situácii je názov modulu, v tomto prípade 'testing', nastavený ako hodnota premennej __name__ v testing.py a nie '__main__.' Z tohto dôvodu je výstup z testovania. any() je 'Hodnota __name__: testing.' Toto ilustruje, ako spustenie skriptu priamo v porovnaní s jeho importovaním ako modulu ovplyvňuje hodnotu premennej __name__.

Pomocou podmienky if name == main :

Používame ak vyhlásenie a stav __name__ == __main__ vyhlásiť to určitý kód Pythonu by malo byť vykoná sa pri priamom spustení skriptu .

Príklad:

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

V tomto prípade sa schopnosť aktuálneho modulu alebo skriptu spustiť nezávisle zisťuje pomocou reťazca __main__. Na označenie tlmočníka jazyka Python, že kľúčové slovo v premennej __name__ je vyhradené alebo špeciálne, sú na oboch stranách výrazu dve podčiarkovníky.

Príklad kódu pre názov v Pythone:

Ako už bolo povedané, keď spustíme súbor kódu, kód sa vykoná priamo – ani sa neimportuje do iného súboru – a v dôsledku toho sa hodnota premennej __name__ zmení na __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.') 

Výkon:

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

Vysvetlenie:

Funkcia čokoľvek () špecifikovaná v skripte ScriptP1 sa spúšťa priamo ako hlavný program, ako ukazuje výstup 'Je to funkcia v skripte ScriptP1.' za ktorým nasleduje 'Volané zo skriptuP1.' Keď je skript spustený priamo v Pythone, premenná __name__ je nastavená na '__main__'; následne sa podmienka if __name__=='__main__': vyhodnotí ako True, pričom funkciu zavolá čokoľvek (). Nasledujúci príkaz print overuje, či sa skript skutočne priamo spúšťa.

Teraz urobme nový súbor skriptu Python s názvom ScriptP2.py, importujeme doň ScriptP1.py a skúsme zavolať metódu ScriptP1 čokoľvek ().

premenovať adresár linux

kód : The ScriptP2.py kód je uvedený tu:

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

Výkon:

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

Vysvetlenie:

Poskytnutý skript Python ukazuje, ako importovať modul 'ScriptP1' do aktívneho skriptu. Metóda 'anything()' je prítomná v 'ScriptP1' a volá sa v hlavnom skripte. Táto funkcia sa zavolá a skript vypíše 'Volané z ScriptP2.' na označenie, že volanie funkcie bolo dokončené. Tento tok udalostí naznačuje, že funkcia špecifikovaná v 'ScriptP1' bola prístupná a úspešne vykonaná v kontexte skriptu, ktorý je teraz spustený, ktorý je identifikovaný ako 'ScriptP2'.

Keď bol príkaz importu pre ScriptP1 spustený v rámci ScriptP2, premenná __name__ mala hodnotu ScriptP1 (názov modulu); ale keďže ScriptP2 bol prvý skript, ktorý sa spustil, bude mať teraz hodnotu __main__.

Tlač hodnoty __name__ :

Poďme si vytlačiť hodnotu premennej __name__ v každej fáze vykonávania, aby ste jej pomohli lepšie pochopiť.

Príklad: Zdrojový kód skriptu ScriptP1.py Python je uvedený nižšie:

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

Výkon:

 Value or the variable __name__ : __main__ 

Vysvetlenie:

Ukážka kódu Python, ktorý je dodaný, vypíše hodnotu premennej __name__, ktorá sa pri priamom spustení skriptu vyhodnotí ako 'main.' Znamená to, že keď je skript spustený priamo, blok kódu, ktorý nasleduje po if __name__ == '__main__': podmienke, sa spustí a nie je importovaný ako modul do iného skriptu. Tento druh správania sa často používa na rozlíšenie medzi spustením skriptu ako primárnej aplikácie a jeho importovaním do iného skriptu ako modulu.

Príklad 2: A tu je zdrojový kód skriptu ScriptP2.py:

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

Výkon:

 Value or the variable __name__ : __main__ 

Vysvetlenie:

Poskytnutý skript Python používa príkaz import na import súboru 'ScriptP1.py. ' Keď sa vykoná, vytlačí sa 'main' ako hodnota premennej __name__. To znamená, že namiesto importu ako modulu do iného skriptu sa skript spúšťa priamo ako primárna aplikácia. Pri vykonávaní skriptov Python je to obvyklé správanie; kontext vykonávania skriptu sa odráža v premennej __name__.

Zhrnutie:

Vo väčšine programovacích jazykov sa hlavná metóda alebo funkcia zvyčajne používa ako bod, v ktorom sa vykonáva akýkoľvek program. Ale čo Python? Spustenie programu (skriptu) v Pythone zvyčajne začína na riadku 0 alebo na úrovni odsadenia programu 0. K vytvoreniu premennej __name__ však dôjde pred spustením programu Python. Táto premenná môže byť použitá na nahradenie hlavnej metódy v Pythone.