Python Pääfunktio ja -metodi: Ymmärrä def Main()

⚡ Älykäs yhteenveto

Python main-funktio merkitsee aloituskohtaa, josta tulkki aloittaa ohjelman suorittamisen. Määriteltynä def main() -funktiolla ja yhdistettynä if __name__ == “__main__” -suojaan se erottaa uudelleenkäytettävän moduulikoodin itsenäisen skriptin suorituksesta.

  • 🚀 Sisääntulopiste: Pääfunktio määrittää, mistä suoritus alkaa, jotta lukijat voivat seurata ohjelman kulkua yhdestä selkeästä lähtöpisteestä.
  • 🧩 def main():: Kääriping def main() -funktion sisäinen logiikka pitää asennuksen ja suorituksen erillään funktio- ja luokkamääritelmistä.
  • 🔒 __name__ vartija: Jos __name__ == “__main__” -tarkistus suorittaa main()-funktion vain suorassa suorituksessa, ei koskaan tuonnissa.
  • 🔁 Uudelleenkäytettävät moduulit: Suojattu koodi antaa muiden komentosarjojen tuoda funktiosi käynnistämättä koko ohjelmaa.
  • ⌨️ Komentorivin syöte: main()-funktio on luonnollinen paikka lukea sys.argv-argumentteja ja palauttaa lopetustila.
  • 🤖 AI-apu: Tekoälyavustajat, kuten GitHub Copilot scaffold main() -mallipohja ja __name__-vartija lyhyestä kehotteesta.

Python Päätehtävä

Mikä on Python Päätoiminto?

Python päätoiminto on minkä tahansa ohjelman lähtökohta. Kun ohjelma suoritetaan, Python tulkki suorittaa koodin peräkkäin. Pääfunktio suoritetaan vain, kun se suoritetaan Python ohjelma. Se ei suorita pääfunktiota, jos se tuodaan moduulina.

Mikä on def main() -funktio PythonYmmärtääksesi tämän, tarkastele seuraavaa esimerkkikoodia, joka on osa ydintä Python ohjelmointi perusasiat:

def main() Esimerkki 1

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

Python Päätehtävä

Tässä on kaksi tulostettavaa osaa – toinen on määritelty pääfunktiossa, joka on ”Hello World!”, ja toinen on itsenäinen, joka on ”Guru99”. Kun suoritat funktion def main():

  • Vain ”Guru99 tuuman tulosteet
  • eikä koodia "Hei maailma!"

Se johtuu siitä, ettemme ilmoittaneet kutsusta funktio "if__name__== "__main__".

On tärkeää, että pääfunktion määrittämisen jälkeen kutsut koodia nimellä if__name__== “__main__” ja suoritat sitten koodin, vasta sitten saat tulosteen “hello world!” ohjelmointikonsolissa. Harkitse seuraavaa koodia

def main() Esimerkki 2

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

if __name__ == "__main__":
    main()

print("Guru99")

GuruTässä tapauksessa tulostetaan 99.

Python Päätehtävä

Tässä on selitys,

  • Kun Python tulkki lukee lähdetiedoston, se suorittaa kaiken siitä löytyvän koodin.
  • Kun Python suorittaa "lähdetiedoston" pääohjelmana, se asettaa erikoismuuttujalle (__name__) arvon ("__main__").
  • Kun suoritat pääfunktion pythonissa, se lukee sitten "if"-lauseen ja tarkistaa, onko __name__ yhtä kuin __main__.
  • In Python "if__name__== "__main__" antaa sinun ajaa Python tiedostot joko muodossa uudelleenkäytettävät moduulit tai erilliset ohjelmat.

Miksi käyttää main()-funktiota Python?

Python ei pakota sinua kirjoittamaan pääfunktiota, mutta kokeneet kehittäjät käyttävät sellaista lähes jokaisessa ei-triviaalissa skriptissä. def main() -malli tuo järjestystä tiedostoon ja tekee koodista turvallisen uudelleenkäyttää. Tässä ovat tärkeimmät syyt käyttää sitä:

  • Selkeä aloituskohta: main()-funktio kertoo lukijalle tarkalleen, mistä ohjelma alkaa, joten logiikkaa on helppo seurata.
  • Uudelleenkäytettävät moduulit: Code suojattu if __name__ == “__main__” toimii vain suorassa suorituksessa, joten muut tiedostot voivat tuoda funktiosi ilman sivuvaikutuksia.
  • Paikallinen soveltamisala: Main()-funktion sisällä luodut muuttujat pysyvät paikallisina, mikä estää vahingossa tapahtuvat törmäykset globaalien nimien kanssa muualla moduulissa.
  • Helpompi testaus: Logiikan eristäminen main()-funktiossa antaa testijoukon kutsua sitä suoraan ja tarkistaa tuloksen.
  • Jaettu käytäntö: main()-funktio on laajalti tunnettu signaali ohjelman aloituspisteestä, mikä parantaa ylläpidettävyyttä eri tiimien välillä.

Lyhyesti sanottuna main()-funktio on valinnainen Python, mutta se pitää suuremmat ohjelmat luettavina, testattavina ja turvallisina tuotavina.

__name__-muuttuja ja Python Moduulit

Ymmärtääksesi muuttujan __name__ tärkeyden Python päätoimintomenetelmä, harkitse seuraavaa koodia:

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

if __name__ == "__main__":
    main()

print("Guru99")

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

__name__-muuttuja ja Python Moduulit

Harkitse nyt, että koodi tuodaan moduulina

import MainFunction

print("done")

__name__-muuttuja ja Python Moduulit

Tässä koodin selitys: Kuten C, Python käyttää == vertailuun, kun taas = tehtävän antamiseen. Python tulkki käyttää päätoimintoa kahdella tavalla

suora juoksu:

  • __name__=__main__
  • if lauseke == True, ja komentosarja _main_ssa suoritetaan

tuoda moduulina

  • __name__= moduulin tiedostonimi
  • if lauseke == false, ja komentosarjaa __main__ ei suoriteta

Kun koodi suoritetaan, se tarkistaa moduulin nimen "if". Tämä mekanismi varmistaa, että päätoiminto suoritetaan vain suorana suorituksena, ei moduulina tuotuna.

Yllä olevat esimerkit ovat Python 3 koodia, jos haluat käyttää Python 2, harkitse seuraavaa koodia

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

print "Guru99"

In Python 3, sinun ei tarvitse käyttää if__name. Myös seuraava koodi toimii

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

Huomautus: Varmista, että pääfunktion määrittämisen jälkeen jätät jonkin verran sisennystä etkä ilmoita koodia suoraan def main(): -funktion alle, muuten se antaa sisennysvirheen.

Kuinka välittää komentoriviargumentteja Python pää()-funktio

main()-funktio on luonnollinen paikka käsitellä käyttäjän komentorivillä välittämiä syötteitä. Python tallentaa nämä arvot sys.argv-listaan, jonka sys-moduuli tarjoaa. Ensimmäinen kohta, sys.argv[0], on skriptin nimi, ja jokainen sen jälkeinen arvo on käyttäjän antama argumentti.

Seuraava esimerkki lukee ja tulostaa komentoriviargumentteja main()-funktion sisältä:

import sys

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

if __name__ == "__main__":
    main()

Jos tallennat tiedoston nimellä script.py ja suoritat sen python script.py alfa beta, ohjelma tulostaa skriptin nimen ja listan ['alpha', 'beta']. Koska arvot saapuvat main()-funktion sisään, logiikka pysyy järjestyksessä ja helposti testattavana.

Tässä on muutamia käytännön vinkkejä komentorivisyötteen kanssa työskentelyyn:

  • Leikkaa skriptin nimi pois: Käytä sys.argv[1:]-funktiota lukeaksesi vain käyttäjän kirjoittamat argumentit.
  • Käytä argparsea oikeiden työkalujen kanssa: Sisäänrakennettu argparse-moduuli jäsentää liput, asetukset ja ohjetekstin paljon turvallisemmin kuin sys.argv-tiedoston lukeminen käsin.
  • Palauta poistumiskoodi: Kietouta kutsu muotoon sys.exit(main()), jolloin main():n paluuarvosta tulee prosessin lopetustila.
  • Vahvista etukäteen: Tarkista main()-funktion alussa olevien argumenttien lukumäärä ja tyyppi ennen ohjelman loppuosan suorittamista.

Tämä malli muuttaa yksinkertaisen komentosarjan luotettavaksi komentorivityökaluksi samalla kun se pitääping jokainen vaihe yhden testattavan main()-funktion sisällä.

Python main()-funktio vs. muut ohjelmointikielet

C-kielestä tulevat kehittäjät C++tai Java odottaa usein pakollista main()-funktiota. Python toimii eri tavalla, koska se on tulkittava kieli, joten tulkki yksinkertaisesti suorittaa tiedoston ylimmästä rivistä loppuun. main()-funktio Python on siis pikemminkin sopimus kuin sääntö.

  • C, C++, C# ja Java: Main()-funktio on pakollinen aloituskohta. Suoritusympäristö kutsuu sitä automaattisesti, ja niitä voi olla vain yksi ohjelmaa kohden.
  • Python: Main()-funktiota ei tarvita. Suoritus alkaa tiedoston ensimmäiseltä riviltä, ​​ja def main() suoritetaan vain, jos koodisi kutsuu sitä.
  • Vartija: Jos __name__ == “__main__” -lohko antaa Python samankaltainen tarkoitus kuin käännetyllä main()-funktiolla merkitsemällä koodin, jonka tulisi toimia vain, kun tiedosto on pääohjelma.

Joten vaikka muut kielet pakottavat main()-aloituskohdan, Python jättää valinnan sinulle ja tarjoaa saman selkeyden käytäntöjen kautta kääntäjäsäännön sijaan.

UKK

__main__ on nimi Python antaa ylimmän tason komentosarjan, joka havaitaan __name__-muuttujan kautta. main() on tavallinen käyttäjän määrittämä funktio, joka sisältää ohjelmalogiikan. Ne toimivat yhdessä, mutta __main__ on ympäristön nimi, kun taas main() on funktio.

Viimeiseksi sijoittaminen varmistaa Python on jo määritellyt kaikki yllä olevat funktiot ja luokat ennen kuin lohko kutsuu main()-funktiota. Sen suorittaminen aiemmin saattaa viitata vielä määrittelemättömiin nimiin ja aiheuttaa NameError-virheen.

Ei. Python ei liitä nimeen main mitään erityistä merkitystä. Voit kutsua syöttöfunktiota miksi haluat, mutta sen nimeäminen main() on vahva käytäntö, joka viestii ohjelman lähtökohdasta muille kehittäjille.

Kyllä. main()-funktio voi palauttaa arvon, ja yleinen malli kirjoittaa sys.exit(main())-funktion, jolloin paluusta tulee prosessin lopetuskoodi. Arvon 0 palauttaminen merkitsee onnistumista, kun taas nollasta poikkeava arvo merkitsee virhettä.

Ilman suojausta main() suoritetaan sekä tiedoston suoran suorittamisen että tuonnin yhteydessä. Muut ohjelmat, jotka vain haluavat käyttää sen funktioita uudelleen, laukaisevat ei-toivotun suorittamisen ja sivuvaikutuksia.

Funktion main() runko-osa on sisennettävä def main(): -rivin alapuolelle. Seuraavan lausekkeen kirjoittaminen flush-left jättää funktion ilman sisennettyä lohkoa, joten Python aiheuttaa sisennysvirheen. Lisää johdonmukaiset välilyönnit tai tabulaattori.

GitHub Copilot täydentää automaattisesti def main() -rungon ja if __name__ == “__main__” -varren lyhyen kommentin pohjalta. Se ehdottaa myös argumenttien jäsentämistä ja dokumenttimerkkijonoja, jolloin voit keskittyä ohjelman logiikkaan vakiomuotoisten ohjelmien sijaan.

Tekoäly- ja koneoppimisprojekteissa main()-funktio on lähtökohta koulutus- tai päättelyskripteille. Se lukee hyperparametreja komentoriviargumenteista, pitää apuohjelmat tuotavissa uudelleenkäyttöä varten ja helpottaa kokeiden testaamista ja automatisointia.

Tiivistä tämä viesti seuraavasti: