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.

  • 🚀 Ulazna točka: Glavna funkcija definira gdje počinje izvršavanje, tako da čitatelji mogu pratiti tijek programa s jednog jasnog početnog mjesta.
  • 🧩 def glavni():: Zamotajteping Logika unutar def main() funkcije drži postavljanje i izvršavanje odvojenim od definicija funkcija i klasa.
  • 🔒 __ime__ čuvar: Provjera if __name__ == “__main__” pokreće main() samo pri izravnom izvršavanju, nikada pri uvozu.
  • 🔁 Moduli za višekratnu upotrebu: Zaštićeni kod omogućuje drugim skriptama uvoz vaših funkcija bez pokretanja cijelog programa.
  • ⌨️ Unos u naredbeni redak: Funkcija main() je prirodno mjesto za čitanje argumenata sys.argv i vraćanje statusa izlaza.
  • 🤖 AI pomoć: AI asistenti kao što su GitHub Copilot scaffold main() boilerplate i __name__ guard iz kratkog prompta.

Python Glavna funkcija

Š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")

Python Glavna funkcija

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.

Python Glavna funkcija

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__)

Varijabla __name__ i Python Moduli

Sada razmislite, kod se uvozi kao modul

import MainFunction

print("done")

Varijabla __name__ i Python Moduli

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.

Pitanja i odgovori

__main__ je ime Python daje skriptu najviše razine, otkrivenu putem varijable __name__. main() je obična korisnički definirana funkcija koja sadrži logiku vašeg programa. Rade zajedno, ali __main__ je naziv okruženja, dok je main() funkcija.

Postavljanje na kraju osigurava Python već je definirao svaku funkciju i klasu iznad prije nego što blok pozove main(). Ranije pokretanje moglo bi referencirati imena koja još nisu definirana i izazvati NameError.

Ne. Python ne pridaje posebno značenje nazivu main. Funkciju unosa možete nazvati kako god želite, no imenovanje main() je snažna konvencija koja signalizira početnu točku programa drugim programerima.

Da. Funkcija main() može vratiti vrijednost, a uobičajeni obrazac zapisuje sys.exit(main()) tako da return postaje izlazni kod procesa. Vraćanje 0 signalizira uspjeh, dok vrijednost različita od nule signalizira grešku.

Bez guarda, main() se izvršava i kada se datoteka izvršava izravno i kada se uvozi. Drugi programi koji bi samo htjeli ponovno koristiti njegove funkcije izazvali bi neželjeno izvršavanje i nuspojave.

Tijelo funkcije main() mora biti uvučeno ispod linije def main():. Pisanje sljedeće naredbe s poravnanjem ulijevo ostavlja funkciju bez uvučenog bloka, pa Python izaziva IndentationError. Dodajte konzistentne razmake ili tabulator.

GitHub Copilot automatski dovršava kostur def main() i zaštitu if __name__ == “__main__” od kratkog komentara. Također predlaže parsiranje argumenata i docstringove, omogućujući vam da se usredotočite na logiku programa umjesto na standardni tekst.

U projektima umjetne inteligencije i strojnog učenja, funkcija main() je ulazna točka za skripte za učenje ili zaključivanje. Čita hiperparametre iz argumenata naredbenog retka, omogućuje uvoz uslužnih programa za ponovnu upotrebu i olakšava testiranje i automatizaciju eksperimenata.

Sažmite ovu objavu uz: