Πρέπει να έχετε συναντήσει το if __name__ == "κύρια" κατασκευή στην Python. Γνωρίζετε όμως τον ακριβή σκοπό του;
Σε ορισμένες γλώσσες προγραμματισμού, η κύρια μέθοδος χρησιμεύει ως το μόνο σημείο εισόδου για την εκτέλεση ενός προγράμματος. Κατά τη μετάβαση από άλλες γλώσσες στην Python, το ιδίωμα εάν __όνομα__ == "__κύριος__" μπορεί να φαίνεται ότι ολοκληρώνει το ίδιο έργο. Στην Python, αυτό δεν συμβαίνει.
ο εάν __όνομα__ == "__κύριος__" Το idiom επιτρέπει την εκτέλεση ενός συγκεκριμένου κώδικα όταν το αρχείο εκτελείται ως σενάριο. Φροντίζει επίσης να μην εκτελείται ο ίδιος κώδικας όταν εισάγετε το αρχείο ως λειτουργική μονάδα.
Κατανόηση της __name__ Μεταβλητής Συμπεριφοράς
ο __όνομα__ η μεταβλητή είναι ενσωματωμένη στην Python. Αντιπροσωπεύει το όνομα της ενότητας ή του σεναρίου στο οποίο χρησιμοποιείται. Όταν ένα σενάριο εκτελείται ως κύριο πρόγραμμα, η τιμή του ορίζεται σε __κύριος__. Εάν εισάγετε το σενάριο ως λειτουργική μονάδα, η τιμή της μεταβλητής ορίζεται στο πραγματικό όνομα της λειτουργικής μονάδας.
Αυτό μπορεί να προκαλέσει σύγχυση στην αρχή, αλλά ρίξτε μια ματιά στο ακόλουθο παράδειγμα:
Δημιουργήστε ένα σενάριο και ονομάστε το χαιρετισμούς.py. Αυτό το σενάριο θα περιέχει μια συνάρτηση που υποδέχεται έναν χρήστη και εκτυπώνει την τιμή του __όνομα__ μεταβλητός. Θα ζητήσει επίσης από τον χρήστη να εισαγάγει το όνομά του.
defχαιρετώ(όνομα):
Τυπώνω(στ"Γεια σου, {όνομα}!")Τυπώνω("Αξία __name__:", __όνομα__)
αν __όνομα__ == "__κύριος__":
όνομα_χρήστη = είσοδος("Παρακαλώ εισάγετε το όνομά σας: ")
χαιρετίζω (όνομα_χρήστη)
αλλού:
Τυπώνω("Η ενότητα "χαιρετισμοί" έχει εισαχθεί.")
Τρέχοντας το χαιρετισμούς.py Το σενάριο θα εμφανίσει την ακόλουθη έξοδο:
Η αξία του __όνομα__ η μεταβλητή επιστρέφει ως __κύριος__ επειδή το σενάριο εκτελείται απευθείας.
Τώρα δημιουργήστε ένα άλλο σενάριο και ονομάστε το script2.py. Στη συνέχεια, εισαγάγετε το Χαιρετίσματα σενάριο ως ενότητα.
εισαγωγή ΧαιρετίσματαΤυπώνω("Εκτέλεση του σεναρίου χαιρετισμών...")
greetings.greet("Αλίκη")
Καλώντας το χαιρετώ λειτουργία από το χαιρετισμός Η μονάδα δίνει την ακόλουθη έξοδο.
Η αξία του __όνομα__ μεταβλητή αλλάζει στο πραγματικό όνομα της εισαγόμενης λειτουργικής μονάδας. Σε αυτήν την περίπτωση, Χαιρετίσματα.
Αυτή η τιμή είναι αυτό που το ιδίωμα εάν __όνομα__ == "__κύριος__" αναζητά για να προσδιορίσει εάν ένα αρχείο εκτελείται ως σενάριο ή εάν εισάγεται ως λειτουργική μονάδα.
Πότε να χρησιμοποιήσετε την κατασκευή if __name__ == "__main__";
Μπορείτε να προσθέσετε το εάν __όνομα__ == "__κύριος__" κατασκευή σε οποιοδήποτε σενάριο. Αλλά υπάρχουν ορισμένα σενάρια όπου η χρήση του μπορεί να είναι πιο ωφέλιμη. Θα μάθετε για αυτά τα σενάρια χρησιμοποιώντας το απλό πρόγραμμα αριθμομηχανής παρακάτω.
# calculator.py
defΠροσθήκη(α, β):
ΕΠΙΣΤΡΟΦΗ α + βdefαφαιρώ(α, β):
ΕΠΙΣΤΡΟΦΗ α - βdefπολλαπλασιάζω(α, β):
ΕΠΙΣΤΡΟΦΗ α * βdefδιαιρέστε(α, β):
αν β != 0:
ΕΠΙΣΤΡΟΦΗ α/β
αλλού:
ΕΠΙΣΤΡΟΦΗ"Σφάλμα: Διαίρεση με το μηδέν!"αν __όνομα__ == "__κύριος__":
Τυπώνω("Καλώς ήρθατε στην Αριθμομηχανή!")
Τυπώνω("Επιλέξτε μια λειτουργία:")
Τυπώνω("1. Προσθήκη")
Τυπώνω("2. Αφαιρώ")
Τυπώνω("3. Πολλαπλασιάζω")
Τυπώνω("4. Διαιρέστε")επιλογή = int (εισαγωγή("Εισάγετε την επιλογή σας (1-4):"))
num1 = float (είσοδος("Πληκτρολογήστε τον πρώτο αριθμό:"))
num2 = float (εισοδος("Πληκτρολογήστε τον δεύτερο αριθμό:"))
αν επιλογή == 1:
αποτέλεσμα = προσθήκη (num1, num2)
Τυπώνω(στ"Το άθροισμα των {αριθμός1} και {num2} είναι: {αποτέλεσμα}")
ελιφ επιλογή == 2:
αποτέλεσμα = αφαίρεση (num1, num2)
Τυπώνω(στ" Η διαφορά μεταξύ {αριθμός1} και {num2} είναι: {αποτέλεσμα}")
ελιφ επιλογή == 3:
αποτέλεσμα = πολλαπλασιάζω (num1, num2)
Τυπώνω(στ"Το προϊόν του {αριθμός1} και {num2} είναι: {αποτέλεσμα}")
ελιφ επιλογή == 4:
αποτέλεσμα = διαίρεση (num1, num2)
Τυπώνω(στ«Η διαίρεση του {αριθμός1} με {num2} είναι: {αποτέλεσμα}")
αλλού:
Τυπώνω("Μη έγκυρη επιλογή!")
Το πρώτο σενάριο είναι όταν θέλετε να εκτελέσετε ένα σενάριο ανεξάρτητα και να εκτελέσετε συγκεκριμένες ενέργειες. Αυτό επιτρέπει στο σενάριο να λειτουργεί ως αυτόνομο πρόγραμμα. ο εάν __όνομα__ == "__κύριος__" Η κατασκευή επιτρέπει στους χρήστες να αλληλεπιδρούν με την αριθμομηχανή χρησιμοποιώντας τη διεπαφή γραμμής εντολών. Αυτό δίνει στους χρήστες τη δυνατότητα να χρησιμοποιούν τη λειτουργικότητα του προγράμματος χωρίς να χρειάζεται να κατανοήσουν ή να τροποποιήσουν τον υποκείμενο κώδικα.
Είναι ακόμα δυνατή η εκτέλεση του προγράμματος χωρίς το εάν __όνομα__ == "__κύριος__" κατασκευάστε και επιτύχετε το ίδιο αποτέλεσμα, αλλά ο κώδικάς σας θα έχανε την οργάνωση του αρθρωτού κώδικα.
Το δεύτερο σενάριο είναι όταν το θέλεις κώδικα για να έχει αρθρωτό σχεδιασμό. Αυτό επιτρέπει σε άλλα προγράμματα να εισάγουν το σενάριό σας ως λειτουργική μονάδα και να χρησιμοποιούν τις λειτουργίες του χωρίς να ενεργοποιούν περιττές λειτουργίες.
Στην περίπτωση του προγράμματος αριθμομηχανής, άλλα προγράμματα μπορούν να το εισάγουν αριθμομηχανή μονάδα χωρίς ενεργοποίηση της διεπαφής CLI και των προτροπών εισαγωγής χρήστη. Αυτό εξασφαλίζει επαναχρησιμοποίηση κώδικα και αρθρωτό σχεδιασμό. Ως εκ τούτου, επιτρέπει στην αριθμομηχανή να ενσωματώνεται απρόσκοπτα σε μεγαλύτερες εφαρμογές.
εισαγωγή αριθμομηχανή
# Χρήση των συναρτήσεων από τη μονάδα αριθμομηχανής
result_add = calculator.add(5, 3)
Τυπώνω("Αποτέλεσμα προσθήκης:", αποτέλεσμα_προσθήκη)
result_subtract = calculator.subtract(10, 4)
Τυπώνω("Αποτέλεσμα αφαίρεσης:", αποτέλεσμα_αφαίρεση)
Το τρίτο σενάριο είναι όταν το θέλεις δοκιμάστε και διορθώστε το σενάριο Python σας ανεξάρτητα από οποιεσδήποτε άλλες λειτουργικές μονάδες ή σενάρια που ενδέχεται να το εισάγουν. Στο παράδειγμα της αριθμομηχανής, διευκολύνεται η εστίαση στη δοκιμή της λειτουργικότητας της αριθμομηχανής χωρίς παρεμβολές από εξωτερικό κώδικα.
εισαγωγή αριθμομηχανή
# Δοκιμή των λειτουργιών της αριθμομηχανής
αν __όνομα__ == "__κύριος__":
# Προσθήκη δοκιμής
αποτέλεσμα = calculator.add(5, 3)
Τυπώνω("Αποτέλεσμα προσθήκης:", αποτέλεσμα)# Δοκιμή αφαίρεσης
αποτέλεσμα = calculator.subtract(8, 4)
Τυπώνω("Αποτέλεσμα αφαίρεσης:", αποτέλεσμα)
# Δοκιμή πολλαπλασιασμού
result = calculator.multiply(2, 6)
Τυπώνω("Αποτέλεσμα πολλαπλασιασμού:", αποτέλεσμα)
Ο παραπάνω κώδικας δείχνει πώς να διορθώσετε το σενάριο της αριθμομηχανής ανεξάρτητα.
Πότε δεν είναι απαραίτητο να χρησιμοποιήσετε την κατασκευή if __name__ == "__main__";
Όπως έχετε δει στα παραπάνω σενάρια, η χρήση του εάν __όνομα__ == "__κύριος__" η κατασκευή είναι να διαφοροποιήσετε το σενάριο που εκτελείτε ως κύριο πρόγραμμα και αυτό που εισάγετε ως λειτουργική μονάδα. Ωστόσο, υπάρχουν ορισμένες περιπτώσεις όπου η χρήση του είναι περιττή.
Η πρώτη περίπτωση είναι όταν το σενάριό σας είναι απλό και δεν έχει επαναχρησιμοποιήσιμες λειτουργίες ή μονάδες και δεν το σκοπεύετε για εισαγωγή. Σε αυτήν την περίπτωση, θα πρέπει να παραλείψετε αυτήν την κατασκευή καθώς ολόκληρο το σενάριο εκτελείται κατά την εκτέλεση. Αυτό είναι σύνηθες για σενάρια μιας χρήσης που εκτελούν συγκεκριμένο σκοπό και δεν προορίζονται για επαναχρησιμοποίηση ή εισαγωγή.
Η άλλη περίπτωση είναι όταν εργάζεστε σε μια διαδραστική συνεδρία Python π.χ. όταν χρησιμοποιείτε το Σημειωματάριο Jupyter. Σε μια διαδραστική περίοδο λειτουργίας, πληκτρολογείτε και εκτελείτε κώδικα απευθείας στη γραμμή εντολών ή σε ένα διαδραστικό κέλυφος Python. Όπως το Python REPL (Read-Eval-Print Loop). Αυτό σας επιτρέπει να πειραματιστείτε με κώδικα και να δοκιμάσετε μικρά αποσπάσματα, δίνοντάς σας άμεσα αποτελέσματα.
Σε αυτά τα διαδραστικά περιβάλλοντα, η έννοια ενός σεναρίου που εκτελείται ως κύριο πρόγραμμα ή εισάγεται ως λειτουργική μονάδα δεν ισχύει. Εκτελείτε απευθείας αποσπάσματα κώδικα χωρίς να χρειάζεστε ένα παραδοσιακό σημείο εισόδου σεναρίου.
Πώς μπορείτε να γίνετε Master στην Python;
Για να γίνετε κύριος σε οποιαδήποτε γλώσσα προγραμματισμού, πρέπει να κατανοήσετε πώς λειτουργούν οι υποκείμενες έννοιες των συναρτήσεων ή των εργαλείων. Όπως ακριβώς μάθατε για την κατασκευή if __name__ == "__main__" σε αυτό το άρθρο.
Η κατανόηση των υποκείμενων εννοιών θα σας βοηθήσει να γνωρίζετε ακριβώς πώς θα συμπεριφέρεται το πρόγραμμά σας όταν τις χρησιμοποιείτε. Δεν υπάρχει βιασύνη, η εκμάθηση των εννοιών μία κάθε φορά θα σας βοηθήσει να βουτήξετε βαθύτερα σε κάθε μία από αυτές.