logo

__name__ v Pythonu

Název aktuálně spuštěného skriptu nebo modulu Pythonu je uložen ve speciální proměnné __name__ Pythonu. Python 3.0 zavedl proměnnou __name__, která v Pythonu 2 chybí. x. Aktuální hodnota skriptu nebo modulu v Pythonu, __main__, je přiřazena proměnné __name__, když je spuštěn.

Co znamená _name_?

Python má vestavěnou proměnnou nazvanou __name__, která ukládá název skriptu nebo modulu, který se právě spouští. Název skriptu nebo modulu je uložen v proměnné __name__, pokud není spuštěn aktuální modul, v takovém případě je mu přiřazena hodnota __main__.

jak zjistit velikost monitoru

V důsledku toho, když se provádí skript Python, hodnota jeho proměnné __name__ by měla být vždy __main__, pokud je importována do jiného skriptu Python. Pokud ne, zobrazí se název modulu.

Příklad:

Abychom tomu lépe porozuměli, použijme příklad. Udělejte a skript v Pythonu s názvem testing.py, a přidejte k němu následující kód:

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

Výstup:

 Value of the __name__ : __main__ 

Vysvětlení:

Skript je spuštěn okamžitě jako hlavní program, jak je indikováno výstupem 'Hodnota názvu: main.' V Pythonu je hodnota proměnné __name__ skriptu automaticky nastavena na '__main__', když je skript spuštěn přímo. Tento výstup potvrzuje, že skript je spouštěn přímo, nikoli importován jako modul do jiného skriptu

Pojďme nyní vytvořit další skript Python s názvem mains.py a importovat do něj předchozí.

Příklad:

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

Výstup:

jpa na jaře
 Value of the __name__ : testing 

Vysvětlení:

testování. any() je metoda, která se spustí, když je skript testing.py importován do jiného skriptu Python pomocí testování importu. V této situaci je název modulu, v tomto případě 'testing', nastaven jako hodnota proměnné __name__ v testing.py, nikoli '__main__.' Z tohoto důvodu je výstup z testování. any() je 'Hodnota __name__: testování.' To ukazuje, jak přímé spuštění skriptu vs jeho import jako modulu ovlivňuje hodnotu proměnné __name__.

Použití podmínky if name == main :

Používáme if prohlášení a stav __name__ == __main__ to prohlásit určitý kód Pythonu by měl být pouze provedené při přímém spuštění skriptu .

Příklad:

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

V tomto případě se schopnost aktuálního modulu nebo skriptu spustit nezávisle zjišťuje pomocí řetězce __main__. Chcete-li interpretovi jazyka Python oznámit, že klíčové slovo v proměnné __name__ je vyhrazené nebo speciální, jsou na obou stranách výrazu dvě podtržítka.

java parseint

Příklad kódu pro jméno v Pythonu:

Jak již bylo řečeno, když spustíme soubor kódu, kód se provede přímo – ani se neimportuje do jiného souboru – a v důsledku toho se hodnota proměnné __name__ změní 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ýstup:

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

Vysvětlení:

Funkce any() specifikovaná ve skriptu ScriptP1 se spouští přímo jako hlavní program, jak ukazuje výstup 'Je to funkce ve skriptu ScriptP1.' následuje 'Called from the ScriptP1.' Když je skript spuštěn přímo v Pythonu, proměnná __name__ je nastavena na '__main__'; následně se podmínka if __name__=='__main__': vyhodnotí jako True a funkci zavolá any(). Následující příkaz print ověřuje, že skript je skutečně spouštěn přímo.

Nyní vytvoříme nový soubor skriptu Python s názvem ScriptP2.py, importujeme do něj ScriptP1.py a pokusíme se zavolat metodu ScriptP1 any().

Kód : The ScriptP2.py kód je uveden zde:

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

Výstup:

mysql se nerovná
 ScriptP1 is imported into another file. It is a function in the ScriptP1. Called from the ScriptP2. 

Vysvětlení:

Poskytnutý skript Python ukazuje, jak importovat modul 'ScriptP1' do aktivního skriptu. Metoda 'anything()' je přítomna v 'ScriptP1' a je volána v hlavním skriptu. Tato funkce se zavolá a skript vydá 'Voláno z ScriptP2.' označující, že volání funkce bylo dokončeno. Tento tok událostí naznačuje, že funkce specifikovaná v 'ScriptP1' byla přístupná a úspěšně provedena v kontextu skriptu, který je nyní spuštěn, který je označen jako 'ScriptP2'.

Když byl příkaz import pro ScriptP1 spuštěn uvnitř ScriptP2, měla proměnná __name__ hodnotu ScriptP1 (název modulu); ale protože ScriptP2 byl první skript, který se spustil, bude mít nyní hodnotu __main__.

Tisk hodnoty __name__ :

Pojďme si vytisknout hodnotu proměnné __name__ v každé fázi provádění, abychom jí pomohli lépe porozumět.

Příklad: Zdrojový kód skriptu ScriptP1.py Python je uveden níže:

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

Výstup:

 Value or the variable __name__ : __main__ 

Vysvětlení:

Ukázkový kód Pythonu, který je dodán, vydává hodnotu proměnné __name__, která se při přímém spuštění skriptu vyhodnotí jako 'main.' To znamená, že když je skript spuštěn přímo, blok kódu, který následuje po if __name__ == '__main__': podmínce, se spustí, místo aby byl importován jako modul do jiného skriptu. Tento druh chování se často používá k rozlišení mezi spuštěním skriptu jako primární aplikace a jeho importem do jiného skriptu jako modulu.

anonymní funkce Java

Příklad 2: A zde je zdrojový kód skriptu ScriptP2.py:

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

Výstup:

 Value or the variable __name__ : __main__ 

Vysvětlení:

Poskytnutý skript Python používá příkaz import k importu souboru 'ScriptP1.py. ' Po spuštění se jako hodnota proměnné __name__ vytiskne 'main'. To znamená, že namísto importu jako modulu do jiného skriptu se skript spouští přímo jako primární aplikace. Při spouštění skriptů Python je toto obvyklé chování; kontext provádění skriptu se odráží v proměnné __name__.

Souhrn :

Ve většině programovacích jazyků se hlavní metoda nebo funkce obvykle používá jako bod, ve kterém se provádí jakýkoli program. Ale co Python? Spouštění programu (skriptu) v Pythonu normálně začíná na řádku nula nebo na úrovni odsazení programu 0. K vytvoření proměnné __name__ však dojde před spuštěním programu v Pythonu. Tato proměnná může být použita k nahrazení hlavní metody v Pythonu.