Glavna funkcija Pythona

U ovom uputstvu naučit ćemo kako koristiti atribut __name__ programa Python za njegovo dinamičko pokretanje u različitim kontekstima.

Koja je glavna () funkcija u Pythonu?

Neki programski jezici imaju posebnu funkciju main()koja se naziva izvršna točka za programsku datoteku. Python interpreter, međutim, pokreće svaki redak serijski od vrha datoteke i nema eksplicitnu main()funkciju.

Python nudi druge konvencije za definiranje točke izvršenja. Jedan od njih je upotreba main()funkcije i __name__ svojstva python datoteke.

Što je __name__ u Pythonu?

Varijabla __name__ posebna je ugrađena Python varijabla koja prikazuje ime trenutnog modula.

Ima različite vrijednosti, ovisno o tome gdje izvršavamo Python datoteku. Pogledajmo primjer.

Pokretanje datoteke Python kao skripte

Pretpostavimo da imamo Python datoteku koja se zove helloworld.py sa sljedećim sadržajem:

 print(__name__) 

Ako iz naredbenog retka pokrenemo helloworld.py , on se izvodi kao Python skripta. Program Python možemo pokrenuti pomoću sljedeće naredbe:

$ python helloworld.py

Kada program pokrenemo kao skriptu, vrijednost varijable __name__ postavlja se na __main__. Tako će izlaz sljedećeg programa biti:

 __glavni__ 

Pokretanje datoteke Python kao modula

Također možemo pokrenuti Python datoteku kao modul. Za to moramo datoteku uvesti u drugi Python program. Pogledajmo primjer.

Pretpostavimo da imamo Python datoteku koja se naziva main.py u istom direktoriju kao i datoteka heloworld.py. Sadrži sljedeći sadržaj:

 import helloworld 

Kada pokrenemo ovu datoteku, imat ćemo sljedeći izlaz:

 Pozdrav svijete 

Ovdje možemo vidjeti da uvoz modula također pokreće sav kôd u datoteci modula.

Ali, možemo vidjeti da umjesto prikaza __main__, program prikazuje ime modula tj. Helloworld.

To je zato što je, u kontekstu pokretanja datoteke Python kao modula, ime samog modula dodijeljeno varijabli __name__.

Upotreba ako je uvjetna sa __name__

Sad kad smo shvatili kako se varijabli __name__ dodjeljuju vrijednosti, možemo upotrijebiti ifuvjetnu klauzulu za različito pokretanje iste datoteke Python u različitim kontekstima.

Pogledajmo primjer.

Pretpostavimo da promijenimo sadržaj datoteke helloworld.py u sljedeće:

 def main(): print("Hello World") if __name__=="__main__": main() 

Sada, kada ga pokrenemo kao skriptu putem naredbenog retka, izlaz će biti:

 Pozdrav svijete 

Međutim, kada ga pokrenemo kao modul uvozeći ga u datoteku main.py , izlaz se ne prikazuje jer se main()funkcija ne poziva.

Ovdje smo stvorili prilagođenu main()funkciju u datoteci helloworld.py . Izvršava se samo kada se program izvodi kao samostalna skripta, a ne kao uvezeni modul.

Ovo je standardni način da se eksplicitno definira main()funkcija u Pythonu. To je jedan od najpopularnijih slučajeva korištenja varijable __name__ Python datoteke.

Zanimljivi članci...