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.

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")
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.
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__)
Harkitse nyt, että koodi tuodaan moduulina
import MainFunction
print("done")
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.




