Python Glavna funkcija i metoda: Razumijevanje def Main()
โก Pametni saลพetak
Python Glavna funkcija oznaฤava poฤetnu toฤku gdje interpreter poฤinje izvrลกavati program. Definirana s def main() i uparena s if __name__ == โ__main__โ guardom, odvaja kod modula za viลกekratnu upotrebu od samostalnog izvrลกavanja skripte.

ล to je Python Glavna funkcija?
The Python glavna funkcija je poฤetna toฤka svakog programa. Kada se program pokrene, Python Interpreter izvrลกava kod sekvencijalno. Glavna funkcija se izvrลกava samo kada se pokreฤe kao Python program. Neฤe pokrenuti glavnu funkciju ako je uvezen kao modul.
U ฤemu je funkcija def main(). PythonDa biste to razumjeli, razmotrite sljedeฤi primjer koda, koji je dio jezgre Python programiranje osnove:
def main() Primjer 1
def main():
print ("Hello World!")
print ("Guru99")
Ovdje imamo dva ispisa - jedan je definiran unutar glavne funkcije, a to je "Pozdrav svijete!", a drugi je neovisan, a to je "Guru99โ. Kada pokrenete funkciju def main ():
- Samo "GuruIspisi od 99โ
- a ne kod "Hello World!"
To je zato ลกto nismo objavili poziv funkcija โif__name__== โ__main__โ.
Vaลพno je da nakon definiranja glavne funkcije pozovete kod pomoฤu if__name__== โ__main__โ i zatim pokrenete kod, samo tada ฤete dobiti izlaz โzdravo svijetu!โ u programskoj konzoli. Razmotrite sljedeฤi kรดd
def main() Primjer 2
def main():
print("Hello World!")
if __name__ == "__main__":
main()
print("Guru99")
GuruU ovom sluฤaju ispisan je broj 99.
Evo objaลกnjenja,
- Kada Python interpreter ฤita izvornu datoteku, izvrลกit ฤe sav kod koji se u njoj nalazi.
- Kada Python pokreฤe โizvornu datotekuโ kao glavni program, postavlja posebnu varijablu (__name__) da ima vrijednost (โ__main__โ).
- Kada izvrลกite glavnu funkciju u pythonu, ona ฤe tada proฤitati naredbu โifโ i provjeriti je li __name__ jednako __main__.
- In Python โif__name__== โ__main__โ omoguฤuje vam pokretanje Python datoteke bilo kao viลกekratni moduli ili samostalni programi.
Zaลกto koristiti funkciju main() u Python?
Python ne prisiljava vas da napiลกete glavnu funkciju, no iskusni programeri je koriste u gotovo svakom netrivijalnom skriptu. Uzorak def main() unosi red u datoteku i ฤini kod sigurnim za ponovnu upotrebu. Evo glavnih razloga za njegovo koriลกtenje:
- Jasna ulazna toฤka: Funkcija main() govori ฤitatelju toฤno gdje program poฤinje, tako da je logiku lako pratiti.
- Moduli za viลกekratnu upotrebu: Code zaลกtiฤeno s if __name__ == โ__main__โ izvrลกava se samo pri izravnom izvrลกavanju, tako da druge datoteke mogu uvesti vaลกe funkcije bez nuspojava.
- Lokalni opseg: Varijable kreirane unutar main() funkcije ostaju lokalne, ลกto sprjeฤava sluฤajne sukobe s globalnim imenima drugdje u modulu.
- Lakลกe testiranje: Izoliranje logike u main() omoguฤuje testnom paketu da ga izravno pozove i provjeri rezultat.
- Zajedniฤka konvencija: Funkcija main() je ลกiroko prepoznat signal ulazne toฤke programa, ลกto poboljลกava odrลพavanje meฤu timovima.
Ukratko, funkcija main() je opcionalna u Python, ali odrลพava veฤe programe ฤitljivima, testiranima i sigurnima za uvoz.
Varijabla __name__ i Python Moduli
Da bismo razumjeli vaลพnost varijable __name__ u Python metoda glavne funkcije, razmotrite sljedeฤi kod:
def main():
print("hello world!")
if __name__ == "__main__":
main()
print("Guru99")
print("Value in built variable name is: ",__name__)
Sada razmislite, kod se uvozi kao modul
import MainFunction
print("done")
Ovdje je objaลกnjenje koda: Kao C, Python koristi == za usporedbu dok = za dodjelu. Python interpreter koristi glavnu funkciju na dva naฤina
izravna voลพnja:
- __ime__=__glavni__
- if izjava == True, a skripta u _main_bit ฤe izvrลกena
uvoz kao modul
- __name__= naziv datoteke modula
- if iskaz == false, a skripta u __main__ neฤe biti izvrลกena
Kada se kรดd izvrลกi, provjerit ฤe naziv modula s "if". Ovaj mehanizam osigurava da se glavna funkcija izvrลกava samo kao izravno pokretanje, a ne kada se uvozi kao modul.
Gornji primjeri su Python 3 koda, ako ลพelite koristiti Python 2, razmotrite sljedeฤi kรดd
def main(): print "Hello World!" if __name__== "__main__": main() print "Guru99"
In Python 3, ne morate koristiti if__name. Sljedeฤi kod takoฤer radi
def main():
print("Hello World!")
main()
print("Guru99")
Biljeลกka: Pazite da nakon definiranja glavne funkcije ostavite malo uvlake i ne deklarirate kod toฤno ispod funkcije def main(): inaฤe ฤe dati pogreลกku uvlake.
Kako prenijeti argumente naredbenog retka na Python glavna() funkcija
Funkcija main() je prirodno mjesto za obradu unosa koje korisnik prosljeฤuje u naredbenom retku. Python pohranjuje te vrijednosti u popis sys.argv, koji pruลพa standardni sys modul. Prva stavka, sys.argv[0], je naziv skripte, a svaka vrijednost nakon nje je argument koji daje korisnik.
Sljedeฤi primjer ฤita i ispisuje argumente naredbenog retka iz funkcije main():
import sys def main(): print("Script name:", sys.argv[0]) print("Arguments passed:", sys.argv[1:]) if __name__ == "__main__": main()
Ako spremite datoteku kao script.py i pokrenete python script.py alfa beta, program ispisuje naziv skripte i popis ['alpha', 'beta']. Buduฤi da vrijednosti stiลพu unutar main(), logika ostaje organizirana i jednostavna za testiranje.
Evo nekoliko praktiฤnih savjeta za rad s unosom iz naredbenog retka:
- Izreลพite naziv skripte: Koristite sys.argv[1:] za ฤitanje samo argumenata koje je korisnik upisao.
- Koristite argparse za prave alate: Ugraฤeni modul argparse parsira zastavice, opcije i tekst pomoฤi puno sigurnije nego ruฤno ฤitanje sys.argv datoteke.
- Vrati izlazni kod: Zatvorite poziv kao sys.exit(main()) tako da povratna vrijednost main() postane status izlaza procesa.
- Rano potvrdite: Provjerite broj i vrstu argumenata na vrhu funkcije main() prije pokretanja ostatka programa.
Ovaj obrazac pretvara jednostavnu skriptu u pouzdan alat naredbenog retka, a istovremeno odrลพavaping svaki korak unutar jedne, testirane main() funkcije.
Python Funkcija main() u odnosu na druge programske jezike
Programeri koji dolaze iz C-a, C++, ili Java ฤesto oฤekuju obaveznu funkciju main(). Python radi drugaฤije jer je interpretirani jezik, pa interpreter jednostavno pokreฤe datoteku od gornjeg retka do dna. Funkcija main() u Python stoga je konvencija, a ne pravilo.
- C, C++, C# i Java: Funkcija main() je obavezna ulazna toฤka. Runtime je automatski poziva, a moลพe postojati samo jedna po programu.
- Python: Nije potrebna funkcija main(). Izvrลกavanje poฤinje od prvog retka datoteke, a def main() se izvrลกava samo ako je vaลก kod pozove.
- Straลพar: Blok if __name__ == โ__main__โ daje Python svrha sliฤna kompiliranoj main() funkciji oznaฤavanjem koda koji bi se trebao izvrลกavati samo kada je datoteka glavni program.
Dakle, dok drugi jezici nameฤu ulaznu toฤku main(), Python ostavlja vam izbor, nudeฤi istu jasnoฤu putem konvencije umjesto pravila kompajlera.




