Hvad er der i et (Pythons) __name__?

En introduktion til _ _name_ _ variablen og dens anvendelse i Python

Du har sandsynligvis set __name__variablen, når du har gennemgået Python-kode. Nedenfor ser du et eksempel på et kodestykke af, hvordan det kan se ud:

if __name__ == '__main__': main()

I denne artikel vil jeg vise dig, hvordan du kan bruge denne variabel til at oprette moduler i Python.

Hvorfor bruges variablen _ _name_ _?

Den __name__variable (to understregninger før og efter) er en speciel Python variabel. Det får sin værdi afhængigt af, hvordan vi udfører det indeholdende script.

Nogle gange skriver du et script med funktioner, der også kan være nyttige i andre scripts. I Python kan du importere dette script som et modul i et andet script.

Takket være denne specielle variabel kan du beslutte, om du vil køre scriptet. Eller at du vil importere de funktioner, der er defineret i scriptet.

Hvilke værdier kan variablen __name__ indeholde?

Når du kører dit script, er __name__variablen lig __main__. Når du importerer det indeholdende script, vil det indeholde navnet på scriptet.

Lad os se på disse to brugssager og beskrive processen med to illustrationer.

Scenarie 1 - Kør scriptet

Antag, at vi skrev manuskriptetnameScript.py som følger:

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

Hvis du kører nameScript.py, følges nedenstående proces.

Inden al anden kode køres, er __name__variablen indstillet til __main__. Derefter, denmainog myFunctiondef-udsagn køres. Fordi tilstanden evalueres til sand, kaldes hovedfunktionen. Dette kalder til gengæld myFunction. Dette udskriver værdien af __main__.

Scenarie 2 - Importer scriptet i et andet script

Hvis vi f.eks. Vil genbruge myFunction i et andet script, importingScript.pykan vi importere nameScript.pysom et modul.

Koden i importingScript.pykunne være som følger:

import nameScript as ns
ns.myFunction()

Vi har derefter to rækkevidde: et af importingScriptog det andet omfang af nameScript. På illustrationen kan du se, hvordan det adskiller sig fra den første brugssag.

I importingScript.py er __name__variablen indstillet til __main__. Ved at importere nameScript begynder Python at lede efter en fil ved at føje .pytil modulnavnet. Derefter kører koden indeholdt i den importerede fil.

Men denne gang er deter indstillet til nameScript. Igen køres def-erklæringerne for main og myFunction. Men nu bliver tilstanden evalueret til falsk og hoved kaldes ikke.

I importingScript.py kalder vi myFunction, som sender nameScript. NameScript er kendt af myFunction, da denne funktion blev defineret.

Hvis du ville udskrive __name__i importingScript, ville dette blive sendt __main__. Årsagen til dette er, at Python bruger den værdi, der er kendt inden for importingScript.

Konklusion

I denne korte artikel forklarede jeg, hvordan du kan bruge __name__variablen til at skrive moduler. Du kan også køre disse moduler alene. Dette kan gøres ved at bruge, hvordan værdierne for disse variabler ændres afhængigt af hvor de forekommer.