Mi van a (Python) __name__-ban?

Bevezetés a _ _name_ _ változóba és annak használatába a Pythonban

Valószínűleg akkor látta a __name__változót, amikor átment a Python-kódon. Az alábbiakban láthat egy példát a kódrészletre, hogyan nézhet ki:

if __name__ == '__main__': main()

Ebben a cikkben szeretném megmutatni, hogyan használhatja ezt a változót modulok létrehozására a Pythonban.

Miért használják a _ _name_ _ változót?

A __name__változó (két aláhúzás előtte és utána) egy speciális Python változó. Értékét attól függően kapja meg, hogy miként hajtjuk végre a tartalmazó szkriptet.

Néha olyan parancsfájlt ír meg, amely más szkriptekben is hasznos lehet. A Pythonban ezt a parancsfájlt modulként importálhatja egy másik parancsfájlba.

Ennek a speciális változónak köszönhetően eldöntheti, hogy futtatja-e a parancsfájlt. Vagy importálni szeretné a parancsfájlban definiált függvényeket.

Milyen értékeket tartalmazhat a __name__ változó?

A parancsfájl futtatásakor a __name__változó megegyezik __main__. A tartalmazó szkript importálásakor a szkript nevét is tartalmazza.

Vessünk egy pillantást erre a két felhasználási esetre, és két illusztrációval írjuk le a folyamatot.

1. forgatókönyv - Futtassa a szkriptet

Tegyük fel, hogy mi írtuk a forgatókönyvetnameScript.py alábbiak szerint:

def myFunction(): print 'The value of __name__ is ' + __name__
def main(): myFunction()
if __name__ == '__main__': main()

Ha a nameScript.py fájlt futtatja, akkor az alábbi eljárást követi.

Az összes többi kód futtatása előtt a __name__változó értéke __main__. Ezt követően amainés myFunctiondef utasításokat futtatunk. Mivel az állapot igaznak minősül, a fő funkciót hívjuk meg. Ez viszont myFunction-t hív. Ez kinyomtatja a __main__.

2. forgatókönyv - Importálja a szkriptet egy másik szkriptbe

Ha például a myFunction importingScript.pyfunkciót egy másik szkriptben szeretnénk újból felhasználni , importálhatjuk nameScript.pymodulként.

A kód a importingScript.pykövetkező lehet:

import nameScript as ns
ns.myFunction()

Ezután két importingScripthatókörünk van: az egyik és a második hatókör nameScript. Az ábrán láthatja, hogy miben különbözik az első használat esetétől.

Az importingScript.py __name__fájlban a változó értéke __main__. A NameScript importálásával a Python elkezdi keresni a fájlt azáltal, hogy hozzáadja .pya modul nevéhez. Ezután futtatja az importált fájlban található kódot.

De ezúttalnévnévre van állítva. Ismét a main és a myFunction def utasításai futnak. De most az állapot hamisnak minősül, és a főt nem hívják meg.

Az importingScript.py fájlban meghívjuk a myFunction funkciót, amely a nameScript-t adja ki. A nameScript akkor ismert a myFunction számára, amikor ezt a függvényt definiálták.

Ha __name__az importingScript-ben nyomtatna , akkor ez kimenetet eredményezne __main__. Ennek az az oka, hogy a Python az importingScript hatókörében ismert értéket használja.

Következtetés

Ebben a rövid cikkben elmagyaráztam, hogyan használható a __name__változó modulok írására. Ezeket a modulokat önállóan is futtathatja. Ezt úgy tehetjük meg, hogy felhasználjuk, hogyan változnak ezen változók értékei attól függően, hogy hol fordulnak elő.