Python Κύρια Συνάρτηση & Μέθοδος: Κατανόηση του ορισμού Main()

⚡ Έξυπνη Σύνοψη

Python Η συνάρτηση main σηματοδοτεί το σημείο εκκίνησης από το οποίο ο διερμηνέας ξεκινά την εκτέλεση ενός προγράμματος. Ορισμένη με την συνάρτηση def main() και σε συνδυασμό με την συνάρτηση guard if __name__ == “__main__”, διαχωρίζει τον επαναχρησιμοποιήσιμο κώδικα ενότητας από την εκτέλεση αυτόνομου σεναρίου.

  • 🚀 Σημείο εισόδου: Η συνάρτηση main ορίζει από πού ξεκινά η εκτέλεση, έτσι ώστε οι αναγνώστες να μπορούν να παρακολουθούν τη ροή ενός προγράμματος από ένα σαφές σημείο εκκίνησης.
  • 🧩 def main():: Τυλίξτεping Η λογική μέσα στο def main() διατηρεί την εγκατάσταση και την εκτέλεση ξεχωριστά από τους ορισμούς συναρτήσεων και κλάσεων.
  • 🔒 __name__ φύλακας: Ο έλεγχος if __name__ == “__main__” εκτελεί την main() μόνο κατά την άμεση εκτέλεση, ποτέ κατά την εισαγωγή.
  • 🔁 Επαναχρησιμοποιήσιμες ενότητες: Ο προστατευμένος κώδικας επιτρέπει σε άλλα σενάρια να εισάγουν τις συναρτήσεις σας χωρίς να ενεργοποιήσουν ολόκληρο το πρόγραμμα.
  • Είσοδος γραμμής εντολών: Μια συνάρτηση main() είναι το φυσικό μέρος για την ανάγνωση ορισμάτων sys.argv και την επιστροφή μιας κατάστασης εξόδου.
  • 🤖 Βοήθεια AI: Βοηθοί τεχνητής νοημοσύνης όπως το βασικό πρότυπο main() του GitHub Copilot και το __name__ guard από μια σύντομη προτροπή.

Python Κύρια Καθήκοντα

Τι είναι Python Κύρια Λειτουργία;

The Python κύρια λειτουργία είναι το σημείο εκκίνησης οποιουδήποτε προγράμματος. Όταν εκτελείται το πρόγραμμα, το Python Ο διερμηνέας εκτελεί τον κώδικα διαδοχικά. Η συνάρτηση main εκτελείται μόνο όταν εκτελείται ως Python πρόγραμμα. Δεν θα εκτελέσει την κύρια συνάρτηση εάν εισαχθεί ως ενότητα.

Σε τι βρίσκεται η συνάρτηση def main(). PythonΓια να το κατανοήσετε αυτό, σκεφτείτε το ακόλουθο παράδειγμα κώδικα, το οποίο αποτελεί μέρος του πυρήνα Python προγραμματισμού βασικά:

def main() Παράδειγμα 1

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

Python Κύρια Καθήκοντα

Εδώ, έχουμε δύο εκτυπώσεις - η μία ορίζεται εντός της κύριας συνάρτησης που είναι το "Hello World!" και η άλλη είναι ανεξάρτητη, η οποία είναι το "Guru99”. Όταν εκτελείτε τη συνάρτηση def main ():

  • Μόνο "GuruΕκτυπώσεις 99"
  • και όχι τον κωδικό "Hello World!"

Είναι επειδή δεν δηλώσαμε την κλήση συνάρτηση "if__name__== "__main__".

Είναι σημαντικό αφού ορίσετε την κύρια συνάρτηση, να καλέσετε τον κωδικό με if__name__== "__main__" και μετά να εκτελέσετε τον κωδικό, μόνο τότε θα λάβετε την έξοδο "γεια σας κόσμο!" στην κονσόλα προγραμματισμού. Σκεφτείτε τον παρακάτω κώδικα

def main() Παράδειγμα 2

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

if __name__ == "__main__":
    main()

print("Guru99")

GuruΣε αυτήν την περίπτωση, τυπώνεται το 99.

Python Κύρια Καθήκοντα

Εδώ είναι η εξήγηση,

  • Κατά τη Python Ο διερμηνέας διαβάζει ένα αρχείο προέλευσης, θα εκτελέσει όλο τον κώδικα που βρίσκεται σε αυτό.
  • Κατά τη Python εκτελεί το "αρχείο πηγής" ως κύριο πρόγραμμα, ορίζει την ειδική μεταβλητή (__name__) να έχει μια τιμή ("__main__").
  • Όταν εκτελείτε την κύρια συνάρτηση στην python, θα διαβάσει τη δήλωση "if" και θα ελέγχει εάν το __name__ ισούται με __main__.
  • In Python "if__name__== "__main__" σας επιτρέπει να εκτελέσετε το Python αρχεία είτε ως επαναχρησιμοποιήσιμες μονάδες ή αυτόνομα προγράμματα.

Γιατί να χρησιμοποιήσετε μια συνάρτηση main() στο Python?

Python δεν σας αναγκάζει να γράψετε μια συνάρτηση main, ωστόσο οι έμπειροι προγραμματιστές χρησιμοποιούν μία σχεδόν σε κάθε μη τετριμμένο σενάριο. Το μοτίβο def main() βάζει τάξη σε ένα αρχείο και καθιστά τον κώδικα ασφαλή για επαναχρησιμοποίηση. Ακολουθούν οι κύριοι λόγοι για να το χρησιμοποιήσετε:

  • Σαφές σημείο εισόδου: Μια συνάρτηση main() λέει σε κάθε αναγνώστη ακριβώς από πού ξεκινά το πρόγραμμα, επομένως η λογική είναι εύκολο να ακολουθηθεί.
  • Επαναχρησιμοποιήσιμες ενότητες: Code προστατευμένο από if __name__ == Το “__main__” εκτελείται μόνο σε άμεση εκτέλεση, επομένως άλλα αρχεία μπορούν να εισάγουν τις συναρτήσεις σας χωρίς παρενέργειες.
  • Τοπικό πεδίο εφαρμογής: Οι μεταβλητές που δημιουργούνται μέσα στην main() παραμένουν τοπικές, γεγονός που αποτρέπει τυχόν τυχαίες συγκρούσεις με καθολικά ονόματα σε άλλα σημεία της ενότητας.
  • Ευκολότερη δοκιμή: Η απομόνωση της λογικής στην main() επιτρέπει σε μια σουίτα δοκιμών να την καλέσει απευθείας και να ελέγξει το αποτέλεσμα.
  • Κοινή σύμβαση: Μια συνάρτηση main() είναι ένα ευρέως αναγνωρισμένο σήμα του σημείου εισόδου του προγράμματος, το οποίο βελτιώνει τη συντηρησιμότητα σε όλες τις ομάδες.

Με λίγα λόγια, μια συνάρτηση main() είναι προαιρετική στο Python, αλλά διατηρεί τα μεγαλύτερα προγράμματα αναγνώσιμα, δοκιμαστικά και ασφαλή για εισαγωγή.

Η μεταβλητή __name__ και Python Μονάδα μέτρησης

Για να κατανοήσετε τη σημασία της μεταβλητής __name__ στο Python μέθοδος κύριας λειτουργίας, λάβετε υπόψη τον ακόλουθο κώδικα:

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

if __name__ == "__main__":
    main()

print("Guru99")

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

Η μεταβλητή __name__ και Python Μονάδα μέτρησης

Τώρα σκεφτείτε ότι ο κώδικας εισάγεται ως λειτουργική μονάδα

import MainFunction

print("done")

Η μεταβλητή __name__ και Python Μονάδα μέτρησης

Εδώ, είναι η εξήγηση του κώδικα: Όπως ο C, Python χρησιμοποιεί == για σύγκριση ενώ = για ανάθεση. Python Ο διερμηνέας χρησιμοποιεί την κύρια συνάρτηση με δύο τρόπους

απευθείας εκτέλεση:

  • __όνομα__=__κύριο__
  • if δήλωση == True, και το σενάριο στο _main_θα εκτελεστεί

εισαγωγή ως μονάδα

  • __name__= όνομα αρχείου ενότητας
  • εάν η δήλωση == false, και το σενάριο στο __main__ δεν θα εκτελεστεί

Όταν εκτελεστεί ο κώδικας, θα ελέγξει για το όνομα της μονάδας με "if". Αυτός ο μηχανισμός διασφαλίζει ότι η κύρια λειτουργία εκτελείται μόνο ως άμεση εκτέλεση και όχι όταν εισάγεται ως λειτουργική μονάδα.

Τα παραπάνω παραδείγματα είναι Python 3 κωδικούς, αν θέλετε να χρησιμοποιήσετε Python 2, λάβετε υπόψη τον ακόλουθο κώδικα

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

print "Guru99"

In Python 3, δεν χρειάζεται να χρησιμοποιήσετε if__name. Ο παρακάτω κώδικας λειτουργεί επίσης

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

Σημείωση: Βεβαιωθείτε ότι μετά τον ορισμό της κύριας συνάρτησης, αφήνετε κάποια εσοχή και δεν δηλώνετε τον κώδικα ακριβώς κάτω από τη συνάρτηση def main(): διαφορετικά, θα δώσει σφάλμα εσοχής.

Πώς να μεταβιβάσετε ορίσματα γραμμής εντολών στο Python Συνάρτηση main()

Μια συνάρτηση main() είναι το φυσικό μέρος για τον χειρισμό δεδομένων εισόδου που περνάει ένας χρήστης στη γραμμή εντολών. Python αποθηκεύει αυτές τις τιμές στη λίστα sys.argv, την οποία παρέχει η τυπική ενότητα sys. Το πρώτο στοιχείο, sys.argv[0], είναι το όνομα του σεναρίου και κάθε τιμή μετά από αυτό είναι ένα όρισμα που παρέχεται από τον χρήστη.

Το ακόλουθο παράδειγμα διαβάζει και εκτυπώνει ορίσματα γραμμής εντολών από μέσα σε μια συνάρτηση main():

import sys

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

if __name__ == "__main__":
    main()

Αν αποθηκεύσετε το αρχείο ως script.py και εκτελέσετε python script.py alpha beta, το πρόγραμμα εκτυπώνει το όνομα του σεναρίου και τη λίστα ['alpha', 'beta']. Επειδή οι τιμές φτάνουν μέσα στην main(), η λογική παραμένει οργανωμένη και εύκολη στη δοκιμή.

Ακολουθούν μερικές πρακτικές συμβουλές όταν εργάζεστε με εισαγωγή δεδομένων από γραμμή εντολών:

  • Κόψτε το όνομα του σεναρίου: Χρησιμοποιήστε την εντολή sys.argv[1:] για να διαβάσετε μόνο τα ορίσματα που πληκτρολόγησε ο χρήστης.
  • Χρησιμοποιήστε το argparse για πραγματικά εργαλεία: Η ενσωματωμένη ενότητα argparse αναλύει σημαίες, επιλογές και κείμενο βοήθειας με πολύ μεγαλύτερη ασφάλεια από την ανάγνωση του sys.argv με το χέρι.
  • Επιστρέψτε έναν κωδικό εξόδου: Τυλίξτε την κλήση ως sys.exit(main()), έτσι ώστε η τιμή επιστροφής της main() να γίνει η κατάσταση εξόδου της διεργασίας.
  • Επικυρώστε νωρίς: Ελέγξτε τον αριθμό και τον τύπο των ορισμάτων στην κορυφή της main() πριν εκτελέσετε το υπόλοιπο πρόγραμμα.

Αυτό το μοτίβο μετατρέπει ένα απλό σενάριο σε ένα αξιόπιστο εργαλείο γραμμής εντολών, ενώ παράλληλα διατηρείping κάθε βήμα μέσα σε μια ενιαία, ελέγξιμη συνάρτηση main().

Python Συνάρτηση main() έναντι άλλων γλωσσών προγραμματισμού

Προγραμματιστές που προέρχονται από την C, C++Το HIFU, ή Υψηλής Έντασης Εστιασμένος Υπέρηχος, στοχεύει επίσης στο πρόσωπο και τον λαιμό. Προσφέρει θεραπεία σε γρήγορες εκπομπές, γεγονός που κάνει τις συνεδρίες θεραπείας συντομότερες. Java συχνά αναμένουν μια υποχρεωτική συνάρτηση main(). Python λειτουργεί διαφορετικά επειδή είναι μια γλώσσα διερμηνείας, επομένως ο διερμηνέας απλώς εκτελεί ένα αρχείο από την επάνω γραμμή προς τα κάτω. Η συνάρτηση main() στο Python είναι επομένως μια σύμβαση και όχι ένας κανόνας.

  • C, C++, C# και Java: Μια συνάρτηση main() είναι ένα απαιτούμενο σημείο εισόδου. Το περιβάλλον εκτέλεσης την καλεί αυτόματα και μπορεί να υπάρχει μόνο μία ανά πρόγραμμα.
  • Python: Δεν απαιτείται συνάρτηση main(). Η εκτέλεση ξεκινά από την πρώτη γραμμή του αρχείου και η def main() εκτελείται μόνο εάν την καλέσει ο κώδικά σας.
  • Ο φύλακας: Το μπλοκ if __name__ == “__main__” δίνει Python ένας σκοπός παρόμοιος με μια μεταγλωττισμένη main() επισημαίνοντας κώδικα που θα πρέπει να εκτελείται μόνο όταν το αρχείο είναι το κύριο πρόγραμμα.

Έτσι, ενώ άλλες γλώσσες επιβάλλουν ένα σημείο εισόδου main(), Python αφήνει την επιλογή σε εσάς, προσφέροντας την ίδια σαφήνεια μέσω σύμβασης αντί για κανόνα μεταγλωττιστή.

Συχνές Ερωτήσεις

__main__ είναι το όνομα Python δίνει το σενάριο ανώτατου επιπέδου, που ανιχνεύεται μέσω της μεταβλητής __name__. Η main() είναι μια συνηθισμένη συνάρτηση οριζόμενη από τον χρήστη που περιέχει τη λογική του προγράμματός σας. Δουλεύουν μαζί, αλλά η __main__ είναι ένα όνομα περιβάλλοντος ενώ η main() είναι μια συνάρτηση.

Η τοποθέτησή του τελευταίου διασφαλίζει Python έχει ήδη ορίσει κάθε συνάρτηση και κλάση παραπάνω πριν το μπλοκ καλέσει την main(). Η εκτέλεσή της νωρίτερα θα μπορούσε να αναφέρει ονόματα που δεν έχουν ακόμη οριστεί και να προκαλέσει ένα NameError.

Όχι. Python Δεν αποδίδει ιδιαίτερη σημασία στο όνομα main. Μπορείτε να ονομάσετε τη συνάρτηση εισόδου όπως θέλετε, ωστόσο η ονομασία της ως main() είναι μια ισχυρή σύμβαση που σηματοδοτεί το σημείο εκκίνησης του προγράμματος σε άλλους προγραμματιστές.

Ναι. Μια συνάρτηση main() μπορεί να επιστρέψει μια τιμή και ένα κοινό μοτίβο γράφει το sys.exit(main()) έτσι ώστε η τιμή return να γίνει ο κωδικός εξόδου της διεργασίας. Η επιστροφή 0 σηματοδοτεί επιτυχία, ενώ μια μη μηδενική τιμή σηματοδοτεί σφάλμα.

Χωρίς το guard, η main() εκτελείται τόσο όταν το αρχείο εκτελείται απευθείας όσο και όταν εισάγεται. Άλλα προγράμματα που ήθελαν μόνο να επαναχρησιμοποιήσουν τις λειτουργίες του θα προκαλούσαν ανεπιθύμητη εκτέλεση και παρενέργειες.

Το σώμα της main() πρέπει να έχει εσοχή κάτω από τη γραμμή def main():. Η σύνταξη της επόμενης εντολής flush-left αφήνει τη συνάρτηση χωρίς εσοχή σε μπλοκ, επομένως Python δημιουργεί ένα IndentationError. Προσθέστε συνεχόμενα κενά ή ένα tab.

Το GitHub Copilot συμπληρώνει αυτόματα τον σκελετό def main() και τον προστατευτικό κώδικα if __name__ == “__main__” από ένα σύντομο σχόλιο. Προτείνει επίσης ανάλυση ορισμάτων και συμβολοσειρές docstring, επιτρέποντάς σας να εστιάσετε στη λογική του προγράμματος αντί για το στερεότυπο.

Σε έργα Τεχνητής Νοημοσύνης και μηχανικής μάθησης, μια συνάρτηση main() είναι το σημείο εισόδου για σενάρια εκπαίδευσης ή συμπερασμάτων. Διαβάζει υπερπαραμέτρους από ορίσματα γραμμής εντολών, διατηρεί τα βοηθητικά προγράμματα εισαγόμενα για επαναχρησιμοποίηση και διευκολύνει τη δοκιμή και την αυτοματοποίηση πειραμάτων.

Συνοψίστε αυτήν την ανάρτηση με: