Αυτή η διάλεξη θα εκτείνεται γύρω από τις ενότητες και τα πακέτα στην Python.
Είναι ένας τρόπος να οργανώσετε τον κώδικά σας με τη μορφή αρχείων και είναι πολύ σημαντικοί εάν σκοπεύετε να δημιουργήσετε εφαρμογές ιστού με την Python
ενότητες
Μια λειτουργική μονάδα στην Python είναι βασικά ένα αρχείο με κάποιο κώδικα python που χρησιμοποιούμε για να οργανώσουμε τον κώδικά μας σε αρχεία. Σκεφτείτε το σαν τμήματα σε ένα σούπερ μάρκετ. Όταν πηγαίνετε σε ένα σούπερ μάρκετ υπάρχουν διαφορετικά τμήματα για φρούτα, λαχανικά, προϊόντα καθαρισμού κλπ. Δεν βλέπετε ένα τμήμα με όλα τα προϊόντα.
Είναι η ίδια ιδέα στον προγραμματισμό. Αντί να γράφουμε όλο τον κώδικά μας με όλες τις συναρτήσεις και τις κλάσεις στο main.py, χωρίζουμε τον κώδικά μας σε πολλά αρχεία. Κάθε αρχείο αναφέρεται ως ενότητα. Με αυτό, όχι μόνο ο κώδικάς μας είναι καλύτερα οργανωμένος και δομημένος, αλλά έχουμε επίσης τη δυνατότητα να επαναχρησιμοποιήσουμε τον κώδικά μας. Ας το δούμε μέσα από ένα παράδειγμα.
Ας ορίσουμε δύο συναρτήσεις για τη μετατροπή του βάρους από λίβρες σε κιλά και αντίστροφα.
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
Τώρα, μπορούμε να πάρουμε αυτές τις δύο συναρτήσεις και να τις βάλουμε σε μια ξεχωριστή ενότητα που ονομάζεται "μετατροπείς", και στη συνέχεια μπορεί να εισαχθεί σε οποιοδήποτε πρόγραμμα που χρειάζεται αυτές τις λειτουργίες μετατροπέα. Επιτρέψτε μου να σας δείξω πώς να το κάνετε αυτό.
Ας ανοίξουμε τον πίνακα του έργου μας και ας κάνουμε δεξί κλικ στο έργο και ας προσθέσουμε ένα νέο αρχείο. Θα ονομάσουμε αυτό το αρχείο "Converters.py".
Τώρα αντιγράψτε τον κώδικα από το προεπιλεγμένο αρχείο και επικολλήστε τον στο "Converters.py".
Με αυτό, έχουμε καθαρίσει την κύρια μονάδα μας και δεν είναι φουσκωμένη με διαφορετικές λειτουργίες. Καθώς γράφουμε περισσότερες συναρτήσεις με κλάσεις, τις βάζουμε στις αντίστοιχες ενότητες τους. Μια ενότητα πρέπει να περιέχει όλες τις σχετικές συναρτήσεις και κλάσεις. Τώρα, θέλουμε να εισαγάγουμε τη μονάδα μετατροπέων στη λειτουργική μονάδα εφαρμογής μας. Για να το κάνετε αυτό, γράψτε import converters
στην κορυφή χωρίς την επέκταση ".py".
Μπορούμε να έχουμε πρόσβαση στα μέλη μιας λειτουργικής μονάδας χρησιμοποιώντας έναν τελεστή κουκκίδων παρόμοιο με μεθόδους.
Ας μετατρέψουμε 70 κιλά σε λίρες:
Υπάρχει επίσης μια άλλη σύνταξη για την εισαγωγή μονάδων. Αντί να εισάγουμε ολόκληρη την ενότητα, μπορούμε να εισάγουμε συγκεκριμένες συναρτήσεις από αυτήν την ενότητα. Μπορούμε να πληκτρολογήσουμε from Converters import
και πατήστε “control + space για να εμφανιστεί η λίστα με τις διαθέσιμες λειτουργίες. Με αυτό, μπορούμε να καλέσουμε απευθείας αυτήν τη συνάρτηση.
Άσκηση
Εδώ είναι η άσκησή σας.
Αυτό σχετίζεται με μια άσκηση από τη διάλεξη όπου συζητήσαμε "για βρόχους” όπου γράψαμε ένα πρόγραμμα για να μάθουμε τον μεγαλύτερο αριθμό από μια λίστα
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
Αυτός ο κωδικός προς το παρόν δεν έχει οργάνωση. Δεν έχουμε λειτουργίες ή λειτουργικές μονάδες και το πρόγραμμα είναι γραμμένο σε ένα μόνο αρχείο. Αυτό είναι εντάξει για μικρά προγράμματα, αλλά καθώς τα προγράμματά σας μεγαλώνουν, πρέπει να οργανώσετε σωστά τον κώδικά σας σε κλάσεις και ενότητες. Επομένως, ως μέρος αυτής της άσκησης, θέλω να γράψετε μια συνάρτηση, καλέστε την find_max
. Αυτή η συνάρτηση θα πρέπει να λάβει μια λίστα και να επιστρέψει τον μεγαλύτερο αριθμό σε αυτήν τη λίστα. Μετά από αυτό προχωρήστε και βάλτε αυτήν τη λειτουργία σε μια ξεχωριστή ενότητα, εξαγάγετε την από εδώ και βάλτε την σε μια ενότητα που ονομάζεται utils
. Αυτή η ενότητα θα πρέπει να περιέχει μια δέσμη βοηθητικών λειτουργιών. Εισαγάγετε το utils
μονάδα στην τρέχουσα μονάδα και καλέστε find_max
λειτουργία. Τέλος, λάβετε το αποτέλεσμα και εκτυπώστε το στο τερματικό.
Αυτή η άσκηση είναι λίγο προκλητική αλλά εύκολα πραγματοποιήσιμη.
Λύση
Ξεκινήστε ορίζοντας μια συνάρτηση find_max
και προσθέστε μια παράμετρο που ονομάζεται αριθμοί. Μέσα σε αυτή τη συνάρτηση, γράψτε τον αλγόριθμο για την εύρεση του μεγαλύτερου αριθμού σε μια λίστα.
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
Αποθηκεύστε αυτόν τον κώδικα σε ένα αρχείο "utils.py" ως λειτουργική μονάδα.
Επιστρέψτε στο κύριο πρόγραμμά μας, απλώς εισαγάγετε τη λειτουργική μονάδα με οποιαδήποτε από τις δύο συντάξεις και απλώς εκτελέστε τη λογική.
Ένα πράγμα, πρέπει να επιστήσω την προσοχή σας είναι το υπονομευμένο max
. Ο λόγος για αυτό είναι η max
είναι μια ενσωματωμένη συνάρτηση στην Python και την επαναπροσδιορίζουμε. Αυτή είναι λοιπόν μια προειδοποίηση από την Μεταγλωττιστής Python ότι δεν μπορούμε πλέον να χρησιμοποιούμε το max ως ενσωματωμένη λειτουργία του.
Ενσωματωμένες μονάδες σε Python
Η Python συνοδεύεται από μια τυπική βιβλιοθήκη που περιέχει πολλές ενότητες για κοινές εργασίες, όπως αποστολή email, εργασία με ημερομηνία και ώρα, δημιουργία τυχαίων τιμών και κωδικών πρόσβασης και ούτω καθεξής. Υπάρχουν τόσες πολλές ενότητες ήδη ενσωματωμένες στην Python που σημαίνει ότι υπάρχουν ήδη πολλές λειτουργίες που μπορούμε να χρησιμοποιήσουμε ξανά. Μπορείτε να βρείτε αυτές τις ενότητες εδώ.
Πακέτα
Τα πακέτα είναι βασικά ένας άλλος τρόπος για να οργανώσουμε τον κώδικά μας πάνω από τα modules. Ένα πραγματικό έργο μπορεί να περιέχει εκατοντάδες ή ακόμα και χιλιάδες ενότητες και με την πάροδο του χρόνου ο κατάλογός μας θα φουσκώσει με τόσα πολλά αρχεία. Επομένως, μια καλύτερη προσέγγιση είναι η οργάνωση σχετικών λειτουργικών μονάδων μέσα σε ένα πακέτο που καθιστά το πακέτο ένα δοχείο για πολλαπλές μονάδες.
Ένας νέος κατάλογος προστίθεται στο έργο και όλες οι σχετικές ενότητες προστίθενται σε αυτόν τον κατάλογο. Για παράδειγμα, σκεφτείτε ένα εμπορικό κέντρο. Υπάρχουν διάφορα τμήματα για ανδρικά, γυναικεία και παιδικά ρούχα σε ένα εμπορικό κέντρο που είναι σαν πακέτα. Κάθε τμήμα έχει διαφορετικές περιοχές για διαφορετικά είδη προϊόντων όπως παπούτσια, μπλουζάκια και μπουφάν. Σκεφτείτε τα ως ενότητες.
Ας δούμε πώς να δημιουργήσετε και να χρησιμοποιήσετε πακέτα στην Python.
Αρχικά, προσθέστε έναν νέο κατάλογο από τον πίνακα έργου. Ας το ονομάσουμε «ηλεκτρονικό εμπόριο». Αυτό το πακέτο θα περιέχει όλες τις ενότητες που σχετίζονται με μια εφαρμογή ηλεκτρονικού εμπορίου.
Είναι ακόμα ένας κενός κατάλογος και για να τον μετατρέψουμε σε πακέτο, πρέπει να δημιουργήσουμε ένα ειδικό αρχείο σε αυτόν. Προσθέστε ένα νέο αρχείο python σε αυτόν τον κατάλογο και ονομάστε αυτό το αρχείο "__init__". Είναι μια ειδική σύμβαση στην Python και όταν ο διερμηνέας Python βλέπει ένα αρχείο με αυτό το όνομα σε έναν κατάλογο, αντιμετωπίζει αυτόν τον κατάλογο ως πακέτο.
Έχουμε επίσης μια εναλλακτική και συνοπτική μέθοδο για τη δημιουργία ενός πακέτου. Απλώς κάντε δεξί κλικ στον πίνακα του έργου και δημιουργήστε ένα πακέτο Python από τη λίστα. Ονομάστε το "eCommerce" και αυτό είναι. Θα δημιουργήσει αυτόματα έναν κατάλογο με ένα αρχείο Python με το όνομα "__init__".
Τώρα, ας δημιουργήσουμε μια ενότητα στο πακέτο και ας την ονομάσουμε "αποστολή". Σε αυτήν την ενότητα, ας δημιουργήσουμε μια απλή συνάρτηση για τον υπολογισμό του κόστους αποστολής.
def calc_shipping():
print("calc_shipping")
Για να αποκτήσουμε πρόσβαση σε αυτήν τη λειτουργία στην κύρια ενότητα μας, πρέπει να έχουμε πρόσβαση σε αυτήν μέσω του πακέτου ηλεκτρονικού εμπορίου. Για άλλη μια φορά έχουμε δύο μεθόδους εισαγωγής αυτής της ενότητας.
Στην πρώτη μέθοδο, μπορούμε να εισαγάγουμε ολόκληρη την ενότητα και στη συνέχεια να καλέσουμε μια συνάρτηση ανεξάρτητα ως εξής:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
Ωστόσο, με αυτήν την προσέγγιση, η κλήση μιας από τις συναρτήσεις σε αυτήν την ενότητα απαιτεί την προσθήκη του προθέματός της eCommerce.shipping.
Αυτό είναι πολύ περίπλοκο. Έτσι, όταν εργαζόμαστε με πακέτα χρησιμοποιούμε συχνά τη δεύτερη προσέγγιση και χρησιμοποιούμε το from
δήλωση.
from eCommerce.shipping import calc_shipping
calc_shipping()
Εάν έχετε πολλές λειτουργίες σε μία λειτουργική μονάδα, μπορείτε να τις εισαγάγετε όλες σε μία γραμμή χρησιμοποιώντας κόμματα μεταξύ τους. Ας υποθέσουμε ότι υπάρχει μια άλλη λειτουργία για τον υπολογισμό του φόρου στη μονάδα αποστολής μας. Θα εισαχθεί ως εξής:
from eCommerce.shipping import calc_shipping, calc_tax
Μπορείτε επίσης να εισαγάγετε μεμονωμένες μονάδες και να αφήσετε τις συναρτήσεις να καλούνται σε μεταγενέστερο στάδιο του προγράμματος. Ας εισαγάγουμε τη μονάδα αποστολής και, στη συνέχεια, χρησιμοποιούμε έναν τελεστή κουκκίδας για να καλέσουμε τη συνάρτηση calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
Τύλιξε!
Τα πακέτα και οι μονάδες είναι εξαιρετικά σημαντικά στην Python. Ειδικά, όταν θέλετε να εργαστείτε με ένα πλαίσιο όπως το Django που χρησιμοποιείται για την κατασκευή εφαρμογές ιστού με την Python. Θα εξετάσουμε το Django κατά τη διάρκεια ενός άλλου μαθήματος Python.
Αυτή ήταν η τελευταία συμβατική διάλεξη αυτής της σειράς. Η επόμενη διάλεξη θα αποκλίνει από τη συνηθισμένη μας μορφή και θα μάθουμε μερικές σημαντικές περιπτώσεις χρήσης στην Python. Αυτό θα σηματοδοτήσει το τέλος αυτής της σειράς και θα προχωρήσουμε στην επόμενη σειρά Python. Μείνετε συντονισμένοι για αυτό.
Αφήστε μια απάντηση