logo

__name__ Python

Pašlaik izpildāmā Python skripta vai moduļa nosaukums tiek saglabāts Python īpašajā mainīgajā __name__. Python 3.0 ieviesa mainīgo __name__, kas nav pieejams Python 2. x. Pašreizējā Python skripta vai moduļa vērtība __main__ tiek piešķirta mainīgajam __name__, kamēr tas tiek palaists.

Ko nozīmē _vārds_?

Python ir iebūvēts mainīgais ar nosaukumu __name__, kas saglabā pašlaik izpildāmā skripta vai moduļa nosaukumu. Skripts vai moduļa nosaukums tiek saglabāts mainīgajā __name__, ja ​​vien nedarbojas pašreizējais modulis, un tādā gadījumā tam tiek piešķirta vērtība __main__.

Līdz ar to, kad tiek izpildīts Python skripts, tā mainīgā __name__ vērtībai vienmēr jābūt __main__, ja ​​tas tiek importēts citā Python skriptā. Ja nē, tiks parādīts moduļa nosaukums.

Piemērs :

Lai to labāk izprastu, izmantosim piemēru. Padarīt a Python skripts testing.py, un pievienojiet tam šādu kodu:

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

Izvade:

 Value of the __name__ : __main__ 

Paskaidrojums:

Skripts nekavējoties darbojas kā galvenā programma, par ko liecina izvade 'Vērtība nosaukumam: galvenā'. Programmā Python skripta mainīgā __name__ vērtība tiek automātiski iestatīta uz '__main__', kad skripts tiek izpildīts tieši. Šī izvade apstiprina, ka skripts tiek palaists tieši, nevis importēts kā modulis citā skriptā

Tagad izveidosim citu Python skriptu mains.py un importējiet tajā iepriekšējo.

Piemērs :

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

Izvade:

 Value of the __name__ : testing 

Paskaidrojums:

testēšana. jebkas() ir metode, kas tiek palaista, kad skripts testing.py tiek importēts citā Python skriptā, izmantojot importēšanas testēšanu. Šādā situācijā moduļa nosaukums, šajā gadījumā “testing”, ir iestatīts kā mainīgā __name__ vērtība failā testing.py, nevis kā “__main__”. Šī iemesla dēļ pārbaudes rezultāts. jebkas () ir '__name__ vērtība: testēšana.' Tas parāda, kā skripta tieša izpilde salīdzinājumā ar tā importēšanu kā moduli ietekmē mainīgā __name__ vērtību.

Izmantojot nosacījumu, ja nosaukums == galvenais:

Mēs izmantojam ja paziņojums un stāvoklis __name__ == __galvenais__ lai to paziņotu noteiktu Python kodu vajadzētu tikai būt tiek veikta, kad skripts tiek palaists tieši .

peles ritināšana nedarbojas

Piemērs :

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

Šajā gadījumā pašreizējā moduļa vai skripta spēja darboties neatkarīgi tiek noteikta, izmantojot virkni __main__. Lai Python tulkam norādītu, ka atslēgvārds mainīgajā __name__ ir rezervēts vai īpašs, termina abās pusēs ir divas pasvītras.

Koda piemērs vārdam Python :

Kā minēts iepriekš, kad mēs palaižam koda failu, kods tiek izpildīts tieši — tas pat netiek importēts citā failā, un rezultātā mainīgā __name__ vērtība mainās uz __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.') 

Izvade:

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

Paskaidrojums:

Funkcija jebkas(), kas norādīta skriptā ScriptP1, tiek palaista tieši kā galvenā programma, kā parādīts izvadē “Tā ir funkcija ScriptP1”. kam seko “Izsaukts no ScriptP1”. Kad skripts tiek palaists tieši programmā Python, mainīgais __name__ tiek iestatīts uz '__main__'; līdz ar to nosacījums if __name__=='__main__': novērtē vērtību True, izsaucot funkciju jebko (). Nākamais drukāšanas paziņojums pārbauda, ​​vai skripts patiešām tiek palaists tieši.

Tagad izveidosim jaunu Python skripta failu ar nosaukumu ScriptP2.py, importēsim tajā ScriptP1.py un mēģināsim izsaukt ScriptP1 metodi jebko ().

Kods: The ScriptP2.py kods ir norādīts šeit:

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

Izvade:

 ScriptP1 is imported into another file. It is a function in the ScriptP1. Called from the ScriptP2. 

Paskaidrojums:

Norādītais Python skripts parāda, kā importēt ScriptP1 moduli aktīvajā skriptā. Metode “anything()” ir pieejama skriptā “ScriptP1”, un tā tiek izsaukta galvenajā skriptā. Šī funkcija tiek izsaukta, un skripts izvada “Izsaukts no ScriptP2”. lai norādītu, ka funkcijas izsaukums ir pabeigts. Šī notikumu plūsma norāda, ka funkcija, kas norādīta skriptā ScriptP1, bija pieejama un veiksmīgi izpildīta kontekstā ar skriptu, kas pašlaik darbojas un tiek identificēts kā ScriptP2.

Kad ScriptP1 importēšanas priekšraksts tika palaists ScriptP2 iekšpusē, mainīgajam __name__ bija vērtība ScriptP1 (moduļa nosaukums); bet, tā kā ScriptP2 bija pirmais skripts, kas tika palaists, tagad tam būs vērtība __main__.

__name__ vērtības drukāšana:

Izdrukāsim mainīgā __name__ vērtību katrā izpildes posmā, lai palīdzētu jums to labāk izprast.

Piemērs : ScriptP1.py Python skripta avota kods ir norādīts tālāk:

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

Izvade:

 Value or the variable __name__ : __main__ 

Paskaidrojums:

Piegādātais Python koda paraugs izvada mainīgā __name__ vērtību, kas, skriptu palaižot tieši, tiek novērtēts kā 'galvenais'. Tas nozīmē, ka, palaižot skriptu tieši, koda bloks, kas nāk aiz nosacījuma if __name__ == '__main__':, tiks izpildīts, nevis tiks importēts kā modulis citā skriptā. Šāda veida uzvedība bieži tiek izmantota, lai atšķirtu skripta izpildi kā primāro lietojumprogrammu un tā importēšanu citā skriptā kā moduli.

2. piemērs: Un šeit ir skripta ScriptP2.py pirmkods:

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

Izvade:

 Value or the variable __name__ : __main__ 

Paskaidrojums:

Norādītais Python skripts izmanto importēšanas priekšrakstu, lai importētu failu “ScriptP1.py. Kad tas tiek izpildīts, 'main' tiek izdrukāts kā mainīgā __name__ vērtība. Tas nozīmē, ka tā vietā, lai importētu kā moduli citā skriptā, skripts tiek izpildīts tieši kā primārā lietojumprogramma. Izpildot Python skriptus, tā ir parasta rīcība; skripta izpildes konteksts ir atspoguļots mainīgajā __name__.

Kopsavilkums:

Lielākajā daļā programmēšanas valodu galvenā metode vai funkcija parasti tiek izmantota kā punkts, kurā tiek izpildīta jebkura programma. Bet kā ar Python? Python programmas (skripta) izpilde parasti sākas ar nulles rindiņu vai programmas atkāpes līmeni 0. Mainīgais __name__ tomēr tiek izveidots pirms Python programmas palaišanas. Šo mainīgo var izmantot, lai aizstātu galveno Python metodi.