Kas ir (Python) __name__?

Ievads mainīgajam _ _name_ _ un tā izmantošanai Python

Visticamāk, __name__mainīgo esat redzējis, kad esat izgājis caur Python kodu. Zemāk ir redzams koda fragmenta piemērs tam, kā tas var izskatīties:

if __name__ == '__main__': main()

Šajā rakstā es vēlos jums parādīt, kā jūs varat izmantot šo mainīgo, lai izveidotu moduļus Python.

Kāpēc tiek izmantots mainīgais _ _name_ _?

__name__Mainīgais (divas pasvītrojumus pirms un pēc), ir īpaša Python mainīgs. Tā iegūst vērtību atkarībā no tā, kā mēs izpildām saturošo skriptu.

Dažreiz jūs rakstāt skriptu ar funkcijām, kas varētu būt noderīgas arī citos skriptos. Programmā Python šo skriptu varat importēt kā moduli citā skriptā.

Pateicoties šim īpašajam mainīgajam, jūs varat izlemt, vai vēlaties palaist skriptu. Vai arī vēlaties importēt skriptā noteiktās funkcijas.

Kādas vērtības var saturēt mainīgais __name__?

Palaižot skriptu, __name__mainīgais ir vienāds __main__. Importējot saturošo skriptu, tajā būs skripta nosaukums.

Apskatīsim šos divus lietošanas gadījumus un aprakstīsim procesu ar divām ilustrācijām.

1. scenārijs - palaidiet skriptu

Pieņemsim, ka mēs uzrakstījām scenārijunameScript.py sekojoši:

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

Ja palaižat nameScript.py, tiek ievērots tālāk aprakstītais process.

Pirms visu pārējo kodu palaišanas __name__mainīgais tiek iestatīts uz __main__. Pēc tammainun myFunctiondef paziņojumi tiek izpildīti. Tā kā nosacījums tiek vērtēts kā patiess, tiek izsaukta galvenā funkcija. Tas savukārt izsauc myFunction. Tas izdrukā vērtību __main__.

2. scenārijs - importējiet skriptu citā skriptā

Piemēram importingScript.py, ja mēs vēlamies atkārtoti izmantot myFunction citā skriptā , mēs varam importēt nameScript.pykā moduli.

Kods importingScript.pyvarētu būt šāds:

import nameScript as ns
ns.myFunction()

Pēc tam mums ir divas darbības jomas: viena importingScriptun otrā nameScript. Attēlā redzēsiet, kā tas atšķiras no pirmā lietošanas gadījuma.

Jo importingScript.py __name__mainīgais ir iestatīts uz __main__. Importējot nameScript, Python sāk meklēt failu, pievienojot .pymoduļa nosaukumam. Pēc tam tiek palaists kods, kas atrodas importētajā failā.

Bet šoreiz tāir iestatīts uz nameScript. Atkal tiek palaisti def paziņojumi galvenajam un myFunction. Bet tagad stāvoklis tiek novērtēts kā nepatiess, un galvenais netiek izsaukts.

ImportējotScript.py, mēs izsaucam myFunction, kas izvada nameScript. NameScript ir zināms myFunction, kad šī funkcija tika definēta.

Ja jūs drukātu __name__importēšanas skriptā, tas tiktu izvadīts __main__. Iemesls tam ir tāds, ka Python izmanto vērtību, kas zināma importēšanas skripta darbības jomā.

Secinājums

Šajā īsajā rakstā es paskaidroju, kā __name__mainīgo var izmantot moduļu rakstīšanai. Šos moduļus varat palaist arī paši. To var izdarīt, izmantojot to, kā mainīgo lielumi mainās atkarībā no tā, kur tie rodas.