Συναρτήσεις
Μέχρι στιγμής, γράφαμε όλο τον κώδικά μας στο app.py, αλλά καθώς τα προγράμματά μας μεγαλώνουν, χρειαζόμαστε έναν καλύτερο τρόπο να οργανώσουμε τον κώδικά μας. Πρέπει να χωρίσουμε τον κώδικά μας σε μικρότερα, πιο διαχειρίσιμα και πιο διατηρούμενα κομμάτια που ονομάζουμε συναρτήσεις. Η συνάρτηση είναι ένα κοντέινερ για μερικές γραμμές κώδικα που εκτελούν μια συγκεκριμένη εργασία.
Για παράδειγμα, έχετε ήδη μάθει για μερικές ενσωματωμένες συναρτήσεις στην Python print()
και input()
. Κάθε λειτουργία έχει έναν σκοπό και ξέρει πώς να εκτελέσει μια συγκεκριμένη εργασία. Έτσι, όταν κατασκευάζουμε μεγάλα σύνθετα προγράμματα, θα πρέπει να χωρίσουμε τον κώδικά μας σε μικρότερα επαναχρησιμοποιήσιμα κομμάτια, δηλαδή συναρτήσεις.
Ας κατανοήσουμε αυτήν την έννοια δημιουργώντας ένα πρόγραμμα για την εκτύπωση ενός χαιρετισμού.
print('Hi there!')
print('Welcome aboard!')
Εδώ έχουμε ένα απλό πρόγραμμα με μόνο δύο γραμμές κώδικα. Τώρα, ας πούμε, θα τα χρειαστούμε σε άλλα προγράμματα για να τα βάλουμε σε μια λειτουργία που μπορούμε να χρησιμοποιήσουμε ξανά.
Επιτρέψτε μου να εισαγάγω μια δεσμευμένη λέξη-κλειδί def
στην Python, η οποία είναι συντομογραφία του ορισμού και χρησιμοποιείται για τον ορισμό μιας συνάρτησης.
def greet_user():
print('Hi there!')
print('Welcome aboard!')
Τώρα αυτό το μπλοκ κώδικα θα ορίσει μια συνάρτηση "greet_user
” με τις γραμμές των κωδικών μετά από αυτό. Κάθε φορά που καλείται αυτή η συνάρτηση, αυτές οι δύο γραμμές θα εκτελούνται. Ας χρησιμοποιήσουμε αυτό:
print('start')
greet_user()
print('finish')
Το πρόγραμμα εκτελείται διαδοχικά, που σημαίνει ότι θα πρέπει να ορίσετε μια συνάρτηση πριν την καλέσετε στο πρόγραμμα.
παράμετροι
Οι καθορισμένες συναρτήσεις λειτουργούν λίγο διαφορετικά από τις ενσωματωμένες συναρτήσεις της Python. Για παράδειγμα, στην περίπτωση του print()
μια συνάρτηση, χρειάζεται κάποιες πληροφορίες που θέλουμε να εκτυπώσουμε, αλλά η λειτουργία χαιρετισμού δεν λαμβάνει καμία πληροφορία. Δεν θα ήταν καλύτερο αν μπορούσατε να περάσετε το όνομα του χρήστη εδώ και μετά, αντί να πείτε "γεια σας", θα μπορούσατε να εκτυπώσετε το όνομα του χρήστη;
Μπορείτε να το κάνετε αυτό προσθέτοντας τις παραμέτρους μέσα στην παρένθεση της καθορισμένης συνάρτησης. Επιτρέψτε μου να σας δείξω:
def greet_user(name):
print('Hi there!')
print('Welcome aboard!')
Τώρα το "name
” μέσα στην παρένθεση θα λειτουργεί σαν τοπική μεταβλητή και μπορούμε να περάσουμε το όνομα του χρήστη όταν την καλούμε.
greet_user('Shahbaz')
Τώρα η παράμετρος ονόματος έχει οριστεί σε "Shahbaz
". Ας αλλάξουμε το πρόγραμμα για να το χρησιμοποιήσουμε.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
print('finish')
Ένα σημαντικό πράγμα που πρέπει να σημειωθεί είναι ότι το "όνομα" στην πρώτη γραμμή ονομάζεται Παράμετρος ενώ το όνομα που παρέχεται, π.χ. Shahbaz ονομάζεται όρισμα.
Ας προχωρήσουμε και να τρέξουμε αυτό το πρόγραμμα.
Έτσι, με αυτές τις παραμέτρους, μπορούμε να λαμβάνουμε πληροφορίες στις συναρτήσεις μας.
Τώρα, ας κάνουμε κάτι ενδιαφέρον. Ας υποθέσουμε ότι θέλετε να προσθέσετε ένα άλλο όνομα στο μήνυμα χαιρετισμού. Είναι απλό.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
greet_user('Aayush')
print('finish')
Τώρα σημειώστε ότι όταν μια συνάρτηση έχει μια παράμετρο, είμαστε υποχρεωμένοι να περάσουμε μια τιμή για αυτήν την παράμετρο. Εάν αφαιρέσετε το όνομα από τη συνάρτηση και εκτελέσετε το πρόγραμμα, θα λάβουμε ένα σφάλμα. Μπορείτε επίσης να χρησιμοποιήσετε πολλαπλές παραμέτρους σε μία συνάρτηση, διαχωρισμένες με κόμμα.
Για παράδειγμα, greet_user(first_name, last_name):
. Τα επιχειρήματα θα μορφοποιηθούν επίσης με παρόμοιο τρόπο.
Επιχειρήματα λέξεων-κλειδιών
Μέχρι στιγμής, μάθαμε ότι όποτε ορίζουμε παραμέτρους για τις συναρτήσεις μας, θα πρέπει πάντα να παρέχουμε τιμές, διαφορετικά θα λάβουμε ένα σφάλμα. Στο τελευταίο πρόγραμμα, τα επιχειρήματα 'Shahbaz'
και 'Bhatti'
ονομάζονται επιχειρήματα θέσης, που σημαίνει ότι η θέση ή η σειρά τους έχει σημασία στο πρόγραμμα.
Στην Python, έχουμε ένα άλλο είδος ορίσματος που ονομάζεται ορίσματα λέξεων-κλειδιών, για τα οποία η θέση δεν έχει σημασία. Επιτρέψτε μου να σας δείξω πώς λειτουργούν.
Δείτε το τελευταίο πρόγραμμα. Μπορούμε να το τροποποιήσουμε ως εξής:
def greet_user(first_name, last_name):
print(f'Hi {first_name} {last_name}')
print('Welcome aboard!')
print('start')
greet_user(first_name='Shahbaz', last_name='Bhatti')
print('finish')
Τώρα το first_name
και last_name
είναι οι παράμετροι της λέξης-κλειδιού. Μπορείτε να αλλάξετε τις θέσεις τους και το αποτέλεσμα θα είναι το ίδιο.
Τώρα αυτό δεν σημαίνει ότι πρέπει να χρησιμοποιούμε πάντα ορίσματα λέξεων-κλειδιών. Τις περισσότερες φορές χρησιμοποιούμε ορίσματα θέσης, αλλά σε ορισμένες περιπτώσεις, αυτά τα ορίσματα λέξεων-κλειδιών μας βοηθούν να βελτιώσουμε την αναγνωσιμότητα του κώδικά μας.
Υπάρχει ένα ακόμη πράγμα που πρέπει να γνωρίζετε σχετικά με τα επιχειρήματα λέξεων-κλειδιών. Τα ορίσματα λέξεων-κλειδιών πρέπει πάντα να έρχονται μετά από ορίσματα θέσης.
Δήλωση επιστροφής
Μέχρι στιγμής μάθαμε πώς να δημιουργούμε συναρτήσεις και να τους στέλνουμε πληροφορίες χρησιμοποιώντας τις παραμέτρους τους. Τώρα ας μάθουμε πώς να δημιουργήσουμε συναρτήσεις που επιστρέφουν τιμές. Αυτό είναι ιδιαίτερα χρήσιμο εάν κάνετε κάποιου είδους υπολογισμούς και θέλετε να επιστρέψετε το αποτέλεσμα σε όποιον χρησιμοποιεί τη συνάρτησή σας. Επιτρέψτε μου να σας δείξω.
Ας ορίσουμε μια συνάρτηση που θα υπολογίζει το τετράγωνο ενός αριθμού.
def square(number):
return number*number
Χρησιμοποιήσαμε τη δήλωση return για να επιστρέψουμε αυτόν τον αριθμό εκτός της συνάρτησης. Τώρα, αν καλέσουμε αυτή τη συνάρτηση, επιστρέφει μια τιμή ακριβώς όπως η input()
λειτουργία. Ας το εκτυπώσουμε στο τερματικό.
Μπορείτε να υποστηρίξετε ότι το ίδιο αποτέλεσμα μπορεί να ληφθεί χωρίς τη χρήση της δήλωσης επιστροφής. Ας το ελέγξουμε.
Βλέπουμε δύο πράγματα, τον αριθμό 9 και κανένα. Τι συμβαινει εδω?
Όταν ο διερμηνέας Python εκτελεί αυτόν τον κώδικα, πρώτα θα καλέσει τη συνάρτηση τετραγώνου και το στοιχείο ελέγχου μετακινείται στη συνάρτηση. Εδώ υπολογίζουμε το τετράγωνο αυτού του δεδομένου αριθμού και μετά τον εκτυπώνουμε στο τερματικό.
Τώρα, από προεπιλογή, όλες οι συναρτήσεις επιστρέφουν την τιμή καμία. Έτσι, εάν δεν έχουμε μια δήλωση επιστροφής εδώ, από προεπιλογή η Python δεν επιστρέφει καμία. Το None είναι αντικείμενο που αντιπροσωπεύει την απουσία τιμής. Είναι σαν τίποτα ή μηδενικό σε C, C++, Java και Javascript.
Τύλιξε!
Ελπίζω να καταλάβατε τη σημασία των λειτουργιών.
Αποτελούν μια σημαντική πτυχή της εκμάθησης Python εάν σχεδιάζετε να γράψετε μεγάλα και πολύπλοκα προγράμματα κατά τη διάρκεια της καριέρας σας στην κωδικοποίηση.
Αφήστε μια απάντηση