Python Põhifunktsioon ja meetod: def Main() mõistmine

⚡ Nutikas kokkuvõte

Python Funktsioon main tähistab alguspunkti, kust interpretaator programmi käivitama hakkab. Defineeritud funktsiooniga def main() ja paaristatud funktsiooniga if __name__ == “__main__” eraldab see korduvkasutatava mooduli koodi eraldiseisvast skripti täitmisest.

  • 🚀 Sisenemispunkt: Põhifunktsioon määrab, kust täitmine algab, nii et lugejad saavad programmi voogu jälgida ühest selgest alguspunktist.
  • 🧩 def main():: Mähiping def main() sees olev loogika hoiab seadistamise ja täitmise funktsioonide ja klassidefinitsioonidest eraldi.
  • 🔒 __name__ valvur: Kontroll if __name__ == “__main__” käivitab main() funktsiooni ainult otsese käivitamise korral, mitte kunagi importimisel.
  • 🔁 Korduvkasutatavad moodulid: Kaitstud kood võimaldab teistel skriptidel importida teie funktsioone ilma kogu programmi käivitamata.
  • ⌨️ Käsurea sisend: Funktsioon main() on loomulik koht sys.argv argumentide lugemiseks ja väljumisoleku tagastamiseks.
  • 🤖 AI abi: Tehisintellekti assistendid, näiteks GitHub Copiloti scaffoldi main() standardvorm ja __name__ valvur lühikese käsuviiba abil.

Python Peamine funktsioon

Mis on Python Peamine funktsioon?

. Python põhifunktsioon on iga programmi alguspunkt. Programmi käivitamisel Python interpreter käivitab koodi järjestikku. Main-funktsioon käivitatakse ainult siis, kui see käivitatakse kui Python programm. See ei käivita põhifunktsiooni, kui see imporditakse moodulina.

Mis on def main() funktsioon PythonSelle mõistmiseks vaatleme järgmist näidiskoodi, mis on osa tuumast Python programmeerimine põhitõed:

def main() Näide 1

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

Python Peamine funktsioon

Siin on meil kaks prinditavat osa – üks on defineeritud põhifunktsioonis nimega „Hello World!“ ja teine ​​on sõltumatu ehk „Guru99”. Funktsiooni def main() käivitamisel:

  • Ainult "Guru99-tollised prindid
  • ja mitte kood "Tere maailm!"

Põhjus on selles, et me ei kuulutanud üleskutset funktsioon "if__name__== "__main__".

On oluline, et pärast põhifunktsiooni määratlemist kutsuksite koodi välja if__name__== "__main__" ja seejärel käivitaksite koodi, alles siis saate väljundi "tere maailm!" programmeerimiskonsoolis. Mõelge järgmisele koodile

def main() Näide 2

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

if __name__ == "__main__":
    main()

print("Guru99")

GuruSel juhul trükitakse 99.

Python Peamine funktsioon

Siin on selgitus,

  • Kui Python tõlk loeb lähtefaili, käivitab see kogu selles leiduva koodi.
  • Kui Python käivitab põhiprogrammina lähtefaili, määrab see erimuutujale (__name__) väärtuse (“__main__”).
  • Kui käivitate pythonis põhifunktsiooni, loeb see lause "if" ja kontrollib, kas __nimi__ võrdub __main__-ga.
  • In Python "if__name__== "__main__" võimaldab teil käivitada Python failid kas kui korduvkasutatavad moodulid või eraldiseisvad programmid.

Miks kasutada funktsiooni main()? Python?

Python ei sunni sind kirjutama main-funktsiooni, kuid kogenud arendajad kasutavad seda peaaegu igas mittetriviaalses skriptis. def main() muster toob faili korra ja muudab koodi taaskasutamise turvaliseks. Siin on peamised põhjused selle kasutamiseks:

  • Selge sisenemispunkt: Funktsioon main() ütleb lugejale täpselt, kust programm algab, seega on loogikat lihtne jälgida.
  • Korduvkasutatavad moodulid: Code valvab if __name__ == “__main__” töötab ainult otse käivitamisel, seega saavad teised failid teie funktsioone importida ilma kõrvalmõjudeta.
  • Kohalik ulatus: Main() sees loodud muutujad jäävad lokaalseteks, mis väldib juhuslikke kokkupõrkeid globaalsete nimedega mujal moodulis.
  • Lihtsam testimine: Loogika isoleerimine funktsioonis main() võimaldab testikomplektil seda otse kutsuda ja tulemust kontrollida.
  • Jagatud kokkulepe: Funktsioon main() on laialdaselt tunnustatud signaal programmi sisenemispunkti kohta, mis parandab meeskondade hooldatavust.

Lühidalt, funktsioon main() on valikuline Python, kuid see hoiab suuremad programmid loetavate, testitavate ja importimiseks ohututena.

Muutuja __name__ ja Python moodulid

Et mõista muutuja __name__ tähtsust Python põhifunktsiooni meetodit, kaaluge järgmist koodi:

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

if __name__ == "__main__":
    main()

print("Guru99")

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

Muutuja __name__ ja Python moodulid

Mõelge nüüd, kood imporditakse moodulina

import MainFunction

print("done")

Muutuja __name__ ja Python moodulid

Siin on koodi selgitus: Nagu C, Python kasutab == võrdlemiseks, samas kui = määramiseks. Python tõlk kasutab põhifunktsiooni kahel viisil

otsejooks:

  • __nimi__=__main__
  • if lause == Tõene ja skriptis _main_käivitatakse

importida moodulina

  • __name__= mooduli failinimi
  • if lause == false ja __main__ skripti ei käivitata

Kui kood on käivitatud, kontrollib see mooduli nime "if". See mehhanism tagab, et põhifunktsiooni täidetakse ainult otsekäivitatuna, mitte moodulina impordituna.

Ülaltoodud näited on Python 3 koodi, kui soovite kasutada Python 2, palun kaaluge järgmist koodi

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

print "Guru99"

In Python 3, ei pea te kasutama if__name. Toimib ka järgmine kood

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

Märge: Veenduge, et pärast põhifunktsiooni määratlemist jätaksite mõne taane ja ei deklareeri koodi otse funktsiooni def main(): alla, vastasel juhul annab see taande vea.

Kuidas käsurea argumente edastada Python peamine() funktsioon

Funktsioon main() on loomulik koht käsureal kasutaja poolt edastatud sisendi haldamiseks. Python salvestab need väärtused sys.argv loendisse, mille pakub standardne sys moodul. Esimene element, sys.argv[0], on skripti nimi ja iga sellele järgnev väärtus on kasutaja esitatud argument.

Järgnev näide loeb ja prindib käsurea argumente funktsiooni main() seest:

import sys

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

if __name__ == "__main__":
    main()

Kui salvestate faili nimega script.py ja käivitate selle python script.py alfa beetaversioon, programm prindib skripti nime ja loendi ['alpha', 'beta']. Kuna väärtused saabuvad main() funktsiooni sisse, püsib loogika korrastatuna ja seda on lihtne testida.

Siin on mõned praktilised näpunäited käsurea sisendiga töötamiseks:

  • Lõika skripti nimi välja: Ainult kasutaja sisestatud argumentide lugemiseks kasutage funktsiooni sys.argv[1:].
  • Kasutage päris tööriistade jaoks argparse'i: Sisseehitatud moodul argparse parsib lippe, valikuid ja abiteksti palju turvalisemalt kui sys.argv käsitsi lugemine.
  • Tagasta väljumiskood: Murra kutse kujule sys.exit(main()), nii et main() tagastusväärtuseks saab protsessi väljumisolek.
  • Kinnitage varakult: Enne ülejäänud programmi käivitamist kontrollige main() alguses argumentide arvu ja tüüpi.

See muster muudab lihtsa skripti usaldusväärseks käsurea tööriistaks, samal ajal kui keeping iga samm ühe testitava main() funktsiooni sees.

Python main() funktsioon vs teised programmeerimiskeeled

C-st tulevad arendajad C++või Java eeldavad sageli kohustuslikku main() funktsiooni. Python töötab erinevalt, kuna see on interpreteeritav keel, seega käivitab interpreter faili lihtsalt ülemisest reast allapoole. Main() funktsioon Python on seega pigem konventsioon kui reegel.

  • C, C++, C# ja Java: Funktsioon main() on kohustuslik sisenemispunkt. Käituskeskkond kutsub seda automaatselt ja programmi kohta saab neid olla ainult üks.
  • Python: Main() funktsiooni pole vaja. Täitmine algab faili esimesest reast ja def main() käivitub ainult siis, kui teie kood seda kutsub.
  • Valvur: Kui __name__ == “__main__” plokk annab Python sarnane eesmärk kompileeritud main() funktsiooniga, märkides koodi, mis peaks käivituma ainult siis, kui fail on põhiprogramm.

Seega, kuigi teised keeled sunnivad peale main() sisenemispunkti, Python jätab valiku teile, pakkudes sama selgust konventsiooni, mitte kompilaatori reegli kaudu.

KKK

__main__ on nimi Python annab tipptasemel skripti, mis tuvastatakse muutuja __name__ abil. main() on tavaline kasutaja määratletud funktsioon, mis sisaldab teie programmi loogikat. Nad töötavad koos, kuid __main__ on keskkonna nimi, samas kui main() on funktsioon.

Viimasele asetamine tagab Python on juba defineerinud kõik ülaltoodud funktsioonid ja klassid enne, kui plokk kutsub funktsiooni main(). Selle varasem käivitamine võib viidata veel defineerimata nimedele ja tekitada nimevea (NameError).

Ei. Python ei omista nimele main mingit erilist tähendust. Sa võid seda funktsiooni nimetada kuidas iganes soovid, kuid selle nimetamine main() on kindel konventsioon, mis annab teistele arendajatele märku programmi lähtepunktist.

Jah. Funktsioon main() saab tagastada väärtuse ja tavaline muster kirjutab sys.exit(main()), nii et tagastatud väärtusest saab protsessi väljumiskood. 0 tagastamine annab märku edust, nullist erinev väärtus aga veast.

Ilma valvurita käivitub main() nii faili otse käivitamisel kui ka importimisel. Teised programmid, mis soovivad ainult selle funktsioone taaskasutada, käivitaksid soovimatu käivitamise ja kõrvalmõjud.

Main() põhiosa peab olema taandatud rea def main(): alla. Järgmise lause kirjutamine flush-left jätab funktsiooni taandatud plokita, seega Python Tekitab taandevea. Lisa ühtlased tühikud või tabulaator.

GitHub Copilot täiendab automaatselt def main() skeletti ja if __name__ == “__main__” valvurit lühikese kommentaari põhjal. See soovitab ka argumentide parsimist ja dokumentatsioone, võimaldades teil keskenduda programmi loogikale malli asemel.

Tehisintellekti ja masinõppe projektides on main() funktsioon treening- või järeldusskriptide sisenemispunkt. See loeb käsurea argumentidest hüperparameetreid, hoiab utiliidid taaskasutamiseks imporditavatena ning muudab katsete testimise ja automatiseerimise lihtsamaks.

Võta see postitus kokku järgmiselt: