Python Funcția și metoda Main: Înțelegerea funcției def Main()

⚡ Rezumat inteligent

Python Funcția main marchează punctul de plecare de la care interpretorul începe să ruleze un program. Definită cu def main() și asociată cu garda if __name__ == „__main__”, aceasta separă codul reutilizabil al modulului de execuția scriptului independent.

  • 🚀 Punct de intrare: Funcția main definește locul de unde începe execuția, astfel încât cititorii să poată urmări fluxul unui program dintr-un punct de plecare clar.
  • 🧩 def main():: Wrapping Logica din interiorul funcției *def main()* păstrează configurarea și execuția separat de definițiile funcțiilor și claselor.
  • 🔒 __nume__ gardian: Verificarea `if __name__ == “__main__”` execută main() doar la execuție directă, niciodată la import.
  • 🔁 Module reutilizabile: Codul protejat permite altor scripturi să importe funcțiile dvs. fără a declanșa întregul program.
  • ⌨️ Intrare din linia de comandă: O funcție main() este locul natural pentru a citi argumentele sys.argv și a returna o stare de ieșire.
  • 🤖 Asistență AI: Asistenții AI, cum ar fi GitHub Copilot, scaffold main(), boilerplate și __name__ guard dintr-un prompt scurt.

Python Funcția principală

Ce Este Python Funcția principală?

Python functie principala este punctul de plecare al oricărui program. Când programul este rulat, Python Interpretorul rulează codul secvențial. Funcția principală este executată numai atunci când este rulată ca un Python program. Nu va rula funcția principală dacă este importată ca modul.

În ce este funcția def main() PythonPentru a înțelege acest lucru, luați în considerare următorul exemplu de cod, care face parte din nucleul Python de programare elemente de bază:

def main() Exemplul 1

def main():
     print ("Hello World!")
print ("Guru99")

Python Funcția principală

Aici, avem două elemente de tipar - una este definită în cadrul funcției principale, care este „Hello World!”, iar cealaltă este independentă, care este „Guru99”. Când executați funcția def main():

  • Doar „GuruImprimări de 99”
  • și nu codul „Hello World!”

Pentru că nu am declarat apelul funcția „if__name__== „__main__”.

Este important ca, după definirea funcției principale, să apelați codul prin if__name__== „__main__” și apoi să rulați codul, numai atunci veți obține rezultatul „hello world!” în consola de programare. Luați în considerare următorul cod

def main() Exemplul 2

def main():
    print("Hello World!")

if __name__ == "__main__":
    main()

print("Guru99")

GuruÎn acest caz este tipărit 99.

Python Funcția principală

Iată explicația,

  • Atunci când Python interpretul citește un fișier sursă, va executa tot codul găsit în el.
  • Atunci când Python rulează „fișierul sursă” ca program principal, setează variabila specială (__name__) să aibă o valoare („__main__”).
  • Când executați funcția principală în python, va citi instrucțiunea „if” și va verifica dacă __name__ este egal cu __main__.
  • In Python „if__name__== „__principal__” vă permite să rulați Python fisiere fie ca module reutilizabile sau programe de sine stătătoare.

De ce să folosiți o funcție main() în Python?

Python nu te obligă să scrii o funcție main, însă dezvoltatorii experimentați folosesc una în aproape fiecare script non-trivial. Modelul def main() aduce ordine într-un fișier și face codul sigur pentru reutilizare. Iată principalele motive pentru care îl folosești:

  • Punct de intrare clar: O funcție main() indică oricărui cititor exact unde începe programul, astfel încât logica este ușor de urmărit.
  • Module reutilizabile: Code protejat de `if __name__ == “__main__”` rulează doar la execuție directă, astfel încât alte fișiere pot importa funcțiile dvs. fără efecte secundare.
  • Domeniu de aplicare local: Variabilele create în cadrul funcției main() rămân locale, ceea ce evită coliziunile accidentale cu nume globale din alte părți ale modulului.
  • Testare mai ușoară: Izolarea logicii în main() permite unei suite de teste să o apeleze direct și să verifice rezultatul.
  • Convenție comună: O funcție main() este un semnal larg recunoscut al punctului de intrare în program, care îmbunătățește mentenabilitatea în cadrul echipelor.

Pe scurt, o funcție main() este opțională în Python, dar menține programele mai mari lizibile, testabile și în siguranță pentru import.

Variabila __name__ și Python Module

Pentru a înțelege importanța variabilei __name__ în Python metoda funcției principale, luați în considerare următorul cod:

def main():
    print("hello world!")

if __name__ == "__main__":
    main()

print("Guru99")

print("Value in built variable name is:  ",__name__)

Variabila __name__ și Python Module

Acum luați în considerare, codul este importat ca modul

import MainFunction

print("done")

Variabila __name__ și Python Module

Iată explicația codului: Ca C, Python folosește == pentru comparație în timp ce = pentru atribuire. Python interpretul folosește funcția principală în două moduri

rulare directă:

  • __name__=__main__
  • if statement == True, iar scriptul din _main_va fi executat

import ca modul

  • __name__= numele fișierului modulului
  • if statement == false, iar scriptul din __main__ nu va fi executat

Când codul este executat, acesta va verifica numele modulului cu „dacă”. Acest mecanism asigură că funcția principală este executată doar ca rulare directă, nu atunci când este importată ca modul.

Exemplele de mai sus sunt Python 3 coduri, dacă doriți să utilizați Python 2, vă rugăm să luați în considerare următorul cod

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

print "Guru99"

In Python 3, nu trebuie să utilizați if__name. Funcționează și următorul cod

def main():
  print("Hello World!")
  
main()
print("Guru99")

Notă: Asigurați-vă că, după definirea funcției principale, lăsați o indentare și nu declarați codul chiar sub funcția def main(): altfel, va da o eroare de indentare.

Cum se transmit argumente din linia de comandă către Python functie principala

O funcție main() este locul natural pentru gestionarea datelor de intrare transmise de un utilizator pe linia de comandă. Python stochează aceste valori în lista sys.argv, pe care o furnizează modulul standard sys. Primul element, sys.argv[0], este numele scriptului, iar fiecare valoare care urmează este un argument furnizat de utilizator.

Următorul exemplu citește și afișează argumente din linia de comandă din interiorul unei funcții main():

import sys

def main():
    print("Script name:", sys.argv[0])
    print("Arguments passed:", sys.argv[1:])

if __name__ == "__main__":
    main()

Dacă salvați fișierul ca script.py și rulați script python.py alfa beta, programul afișează numele scriptului și lista ['alpha', 'beta']. Deoarece valorile ajung în interiorul funcției main(), logica rămâne organizată și ușor de testat.

Iată câteva sfaturi practice atunci când lucrați cu input din linia de comandă:

  • Decupează numele scriptului: Folosește sys.argv[1:] pentru a citi doar argumentele introduse de utilizator.
  • Folosește argparse pentru instrumente reale: Modulul argparse încorporat analizează steagurile, opțiunile și textul de ajutor mult mai sigur decât citirea manuală a fișierului sys.argv.
  • Returnează un cod de ieșire: Încadrați apelul în sys.exit(main()), astfel încât valoarea returnată de main() să devină starea de ieșire a procesului.
  • Validare anticipată: Verificați numărul și tipul argumentelor de la începutul funcției main() înainte de a rula restul programului.

Acest model transformă un script simplu într-un instrument fiabil de linie de comandă în timp ce keeping fiecare pas în cadrul unei singure funcții main() testabile.

Python Funcția main() vs. alte limbaje de programare

Dezvoltatori care provin din C, C++, Java se așteaptă adesea o funcție main() obligatorie. Python funcționează diferit deoarece este un limbaj interpretat, deci interpretorul rulează pur și simplu un fișier de la linia de sus până la linia de jos. Funcția main() din Python este, prin urmare, o convenție mai degrabă decât o regulă.

  • C, C++, C# și Java: O funcție main() este un punct de intrare necesar. Runtime-ul o apelează automat și poate exista doar unul per program.
  • Python: Nu este necesară nicio funcție main(). Execuția începe la prima linie a fișierului, iar funcția def main() rulează numai dacă este apelată de codul dvs.
  • Gardianul: Blocul if __name__ == „__main__” dă Python un scop similar cu o funcție main() compilată, marcând codul care ar trebui să ruleze numai atunci când fișierul este programul principal.

Așadar, în timp ce alte limbaje impun un punct de intrare main(), Python îți lasă alegerea, oferind aceeași claritate prin convenție în loc de o regulă de compilare.

Întrebări frecvente

__main__ este numele Python oferă scriptul de nivel superior, detectat prin variabila __name__. main() este o funcție obișnuită definită de utilizator care conține logica programului. Acestea funcționează împreună, dar __main__ este un nume de mediu, în timp ce main() este o funcție.

Plasarea sa la urmă asigură Python a definit deja fiecare funcție și clasă de mai sus înainte ca blocul să apeleze main(). Rularea mai devreme ar putea face referire la nume care nu sunt încă definite și ar putea genera o eroare NameError.

Nu. Python nu atribuie nicio semnificație specială numelui main. Puteți numi funcția de intrare cum doriți, însă denumirea ei main() este o convenție puternică care semnalează punctul de plecare al programului pentru alți dezvoltatori.

Da. O funcție main() poate returna o valoare, iar un model comun scrie sys.exit(main()) astfel încât valoarea returnată să devină codul de ieșire al procesului. Returnarea valorii 0 semnalează succesul, în timp ce o valoare diferită de zero semnalează o eroare.

Fără gardă, main() rulează atât atunci când fișierul este executat direct, cât și atunci când este importat. Alte programe care ar dori doar să reutilizeze funcțiile sale ar declanșa execuții nedorite și efecte secundare.

Corpul instrucțiunii main() trebuie indentat sub linia def main():. Scrierea următoarei instrucțiuni flush-left lasă funcția fără un bloc indentat, deci Python generează o eroare IndentationError. Adăugați spații consistente sau un tabulator.

GitHub Copilot completează automat scheletul `def main()` și garda `if __name__ == „__main__”` dintr-un comentariu scurt. De asemenea, sugerează analizarea argumentelor și șiruri de documente, permițându-vă să vă concentrați pe logica programului în loc de pe elementele standard.

În proiectele de inteligență artificială și învățare automată, o funcție main() este punctul de intrare pentru scripturile de antrenament sau inferență. Citește hiperparametrii din argumentele din linia de comandă, menține utilitarele importabile pentru reutilizare și facilitează testarea și automatizarea experimentelor.

Rezumați această postare cu: