Πακέτα Python: Πώς να τα δημιουργήσετε και να τα εισαγάγετε;

Σε αυτό το άρθρο, θα μάθετε να διαιρείτε τη βάση κώδικα σας σε καθαρές, αποδοτικές μονάδες χρησιμοποιώντας πακέτα Python. Επίσης, θα μάθετε να εισάγετε και να χρησιμοποιείτε τα δικά σας ή τρίτα πακέτα στο πρόγραμμα Python.

Βίντεο: Πακέτα Python: Οργανώστε τον κωδικό σας

Τι είναι τα πακέτα;

Συνήθως δεν αποθηκεύουμε όλα τα αρχεία μας στον υπολογιστή μας στην ίδια θέση. Χρησιμοποιούμε μια καλά οργανωμένη ιεραρχία καταλόγων για ευκολότερη πρόσβαση.

Παρόμοια αρχεία διατηρούνται στον ίδιο κατάλογο, για παράδειγμα, ενδέχεται να διατηρήσουμε όλα τα τραγούδια στον κατάλογο " μουσική ". Ανάλογα με αυτό, η Python έχει πακέτα για καταλόγους και λειτουργικές μονάδες για αρχεία.

Καθώς το πρόγραμμα εφαρμογής μας μεγαλώνει σε μέγεθος με πολλές ενότητες, τοποθετούμε παρόμοιες ενότητες σε ένα πακέτο και διαφορετικές ενότητες σε διαφορετικά πακέτα. Αυτό καθιστά ένα έργο (πρόγραμμα) εύκολο στη διαχείριση και εννοιολογικά σαφές.

Ομοίως, καθώς ένας κατάλογος μπορεί να περιέχει υποκαταλόγους και αρχεία, ένα πακέτο Python μπορεί να έχει υπο-πακέτα και λειτουργικές μονάδες.

Ένας κατάλογος πρέπει να περιέχει ένα αρχείο που ονομάζεται __init__.pyγια να το θεωρήσει το Python ως πακέτο. Αυτό το αρχείο μπορεί να μείνει κενό, αλλά γενικά τοποθετούμε τον κωδικό αρχικοποίησης για αυτό το πακέτο σε αυτό το αρχείο.

Εδώ είναι ένα παράδειγμα. Ας υποθέσουμε ότι αναπτύσσουμε ένα παιχνίδι. Μια πιθανή οργάνωση πακέτων και ενοτήτων θα μπορούσε να είναι όπως φαίνεται στο παρακάτω σχήμα.

Δομή ενότητας πακέτων στον προγραμματισμό Python

Εισαγωγή μονάδας από ένα πακέτο

Μπορούμε να εισαγάγουμε μονάδες από πακέτα χρησιμοποιώντας τον τελεστή dot (.).

Για παράδειγμα, εάν θέλουμε να εισαγάγουμε τη startλειτουργική μονάδα στο παραπάνω παράδειγμα, μπορεί να γίνει ως εξής:

 import Game.Level.start

Τώρα, εάν αυτή η ενότητα περιέχει μια συνάρτηση που ονομάζεται select_difficulty(), πρέπει να χρησιμοποιήσουμε το πλήρες όνομα για να την αναφέρουμε.

 Game.Level.start.select_difficulty(2)

Εάν αυτή η κατασκευή φαίνεται μεγάλη, μπορούμε να εισαγάγουμε τη μονάδα χωρίς το πρόθεμα του πακέτου ως εξής:

 from Game.Level import start

Μπορούμε τώρα να καλέσουμε τη συνάρτηση ως εξής:

 start.select_difficulty(2)

Ένας άλλος τρόπος εισαγωγής μόνο της απαιτούμενης συνάρτησης (ή κλάσης ή μεταβλητής) από μια ενότητα σε ένα πακέτο θα ήταν ο εξής:

 from Game.Level.start import select_difficulty

Τώρα μπορούμε να καλέσουμε άμεσα αυτήν τη λειτουργία.

 select_difficulty(2)

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

Κατά την εισαγωγή πακέτων, η Python κοιτάζει στη λίστα των καταλόγων που ορίζονται στο sys.path, παρόμοια με τη διαδρομή αναζήτησης λειτουργικής μονάδας.

ενδιαφέροντα άρθρα...