Python Κύρια Συνάρτηση & Μέθοδος: Κατανόηση του ορισμού Main()
⚡ Έξυπνη Σύνοψη
Python Η συνάρτηση main σηματοδοτεί το σημείο εκκίνησης από το οποίο ο διερμηνέας ξεκινά την εκτέλεση ενός προγράμματος. Ορισμένη με την συνάρτηση def main() και σε συνδυασμό με την συνάρτηση guard if __name__ == “__main__”, διαχωρίζει τον επαναχρησιμοποιήσιμο κώδικα ενότητας από την εκτέλεση αυτόνομου σεναρίου.

Τι είναι Python Κύρια Λειτουργία;
The Python κύρια λειτουργία είναι το σημείο εκκίνησης οποιουδήποτε προγράμματος. Όταν εκτελείται το πρόγραμμα, το Python Ο διερμηνέας εκτελεί τον κώδικα διαδοχικά. Η συνάρτηση main εκτελείται μόνο όταν εκτελείται ως Python πρόγραμμα. Δεν θα εκτελέσει την κύρια συνάρτηση εάν εισαχθεί ως ενότητα.
Σε τι βρίσκεται η συνάρτηση def main(). PythonΓια να το κατανοήσετε αυτό, σκεφτείτε το ακόλουθο παράδειγμα κώδικα, το οποίο αποτελεί μέρος του πυρήνα Python προγραμματισμού βασικά:
def main() Παράδειγμα 1
def main():
print ("Hello World!")
print ("Guru99")
Εδώ, έχουμε δύο εκτυπώσεις - η μία ορίζεται εντός της κύριας συνάρτησης που είναι το "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 εκτελεί το "αρχείο πηγής" ως κύριο πρόγραμμα, ορίζει την ειδική μεταβλητή (__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__)
Τώρα σκεφτείτε ότι ο κώδικας εισάγεται ως λειτουργική μονάδα
import MainFunction
print("done")
Εδώ, είναι η εξήγηση του κώδικα: Όπως ο 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 αφήνει την επιλογή σε εσάς, προσφέροντας την ίδια σαφήνεια μέσω σύμβασης αντί για κανόνα μεταγλωττιστή.




