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.