
Μετά από απουσία αρκετών μηνών, ήρθε η στιγμή να συνεχίσουμε το οδοιπορικό μας στην γλώσσα Python περνώντας πια σε προχωρημένα θέματα. Στο σημερινό μας άρθρο θα μιλήσουμε για συναρτήσεις (functions).
Οι συναρτήσεις αποτελούν χαρακτηριστικό κλειδί σε πολλές γλώσσες προγραμματισμού. Δεν θα μπορούσαν λοιπόν να απουσιάζουν και από την Python. Μία συνάρτηση στο προγραμματισμό λειτουργεί αντίστοιχα με μια μαθηματική συνάρτηση με μόνη (ίσως) διαφορά ότι στις προγραμματιστικές συναρτήσεις το αποτέλεσμα των συναρτήσεων μπορεί να επιστραφεί (με τη μορφή κάποιου αντικειμένου) ή όχι.
Στο τέλος του οδηγού θα μπορούμε:
- Να ορίσουμε συναρτήσεις με σταθερές τιμές παραμέτρων
- Να ορίσουμε συναρτήσεις με παραμέτρους που αποτελούν λέξεις – κλειδιά
- Να ορίσουμε συναρτήσεις με λίστες για παραμέτρους
- Να δημιουργήσουμε ανώνυμες συναρτήσεις τύπου lambda
- Να τεκμηριώνουμε σωστά τις συναρτήσεις μας
Για την καλύτερη κατανόηση αυτού του αντικειμένου ο συγκεκριμένος οδηγός χωρίστηκε σε δύο τμήματα…
Προαπαιτούμενα
Μαθαίνοντας Python: Μέρος Ι, Μέρος ΙΙ, Μέρος ΙΙΙ, Μέρος IV, Μέρος V
Πριν ξεκινήσουμε…
… θα ήθελα να επισημάνω ένα – δύο πρακτικά ζητήματα.
Στη συνέχεια παρουσιάζεται ο τρόπος για να επιτευχθούν οι στόχοι που περιγράψαμε στην εισαγωγή. Θα παρατηρήσετε ότι το άρθρο ακολουθεί τη δομή:
Μικρή περιγραφή του τι θέλουμε να επιτύχουμε (+ επιπλέον σχόλια)
Παράδειγμα κώδικα
Στο τέλος του αρχείου θα βρείτε συνημμένο ένα python script που περιέχει συγκεντρωμένα όλα τα παραδείγματα.
Για να τα χρησιμοποιήσετε, αντιγράφετε το εκάστοτε παράδειγμα σε ένα νέο αρχείο python και το εκτελείτε (βλ. Μαθαίνοντας Python – Μέρος 1ο ). Τα παραδείγματα είναι φτιαγμένα με τέτοιον τρόπο ώστε να τυπώνουν τα αποτελέσματα στην οθόνη ώστε να μπορείτε να πιστοποιήσετε εύκολα τη λειτουργικότητά τους. Για διευκόλυνσή σας έχουμε χωρίσει τα παραδείγματα με σχόλια που δίνουν μια μικρή περιγραφή του τι επιχειρούμε κάθε φορά.
Βεβαιωθείτε ότι δεν ξεχάσατε το μάτι της κουζίνας ανοικτό, ετοιμάστε μία κούπα καφέ ή τσάι, βάλτε απαλή μουσική και ξεκινάμε…
Συντάσσοντας μια συνάρτηση
def triangle_area(a, b):
area = a * b / 2
print("Το εμβαδό του τριγώνου είναι:", area)
Παραπάνω μπορείτε να δείτε την βασική δήλωση της συνάρτησης υπολογισμού του εμβασδού τριγώνου. Αρχικά δηλώνουμε τη συνάρτηση χρησιμοποιώντας την δεσμευμένη λέξη def ακολουθούμενη από το όνομα της συνάρτησης (στην προκειμένη περίπτωση triangle_area). Σε παρένθεση τοποθετούνται οι απαιτούμενες παράμετροι (a, b) που στην προκειμένη περίπτωση υποδηλώνουν την βάση και το ύψος του τριγώνου αντίστοιχα). Στη συνέχεια μια νέα μεταβλητή ορίζεται, η μεταβλητή area, στην οποία θα ανατεθεί το αποτέλεσμα της φόρμουλας υπολογισμού του εμβαδού του τριγώνου (βάση * ύψος / 2). Τέλος η συνάρτηση αναλαμβάνει να εκτυπώσει το αποτέλεσμα στην οθόνη.
Κλήση συνάρτησης
Η κλήση μιας συνάρτησης σε Python γίνεται γράφοντας απλά το όνομα της συνάρτησης και περικλείοντας μέσα σε παρένθεση τις τιμές των παραμέτρων (εφόσον χρειάζεται). Έτσι για να χρησιμοποιήσουμε την συνάρτηση που ορίσαμε λίγο νωρίτερα χρησιμοποιούμε την παρακάτω γραμμή κώδικα.
triangle_area(66, 2010)
Προφανώς η ύπαρξη παραμέτρων σε μία συνάρτηση δεν είναι υποχρεωτική. Ας δούμε μαζί την δήλωση της παρακάτω απλής συνάρτησης που τυπώνει ένα συγκεκριμένο μήνυμα στην κονσόλα όταν κληθεί:
def no_params_function():
print("Αυτή η συνάρτηση δε δέχεται παραμέτρους...")
Όπως παρατηρείτε η παρένθεση δεν περιέχει τίποτε, δηλαδή δεν έχουν δηλωθεί παράμετροι. Η κλήση αυτής της συνάρτησης γίνεται ως εξής…
no_params_function()
και όπως θα δείτε αν το δοκιμάσετε, δουλεύει άψογα παρόλη την απουσία των παραμέτρων.
Αναθέτοντας μια συνάρτηση σε μια μεταβλητή
Ναι! Είναι εφικτό. Στην Python μια συνάρτηση μπορεί να ανατεθεί σε μια μεταβλητή (ακόμη ένα σημείο που υποδηλώνει τη δύναμη της συγκεκριμένης γλώσσας προγραμματισμού.
aVariable = triangle_area aVariable(5,8)
Αν τρέξετε τον παραπάνω κώδικα θα διαπιστώσετε ότι θα πάρετε τα ίδια αποτελέσματα με αυτά που θα παίρνατε αν χρησιμοποιούσατε την αρχική συνάρτηση triangle_area(x,y) που δημιουργήσαμε νωρίτερα. Ας δούμε όμως αναλυτικότερα τις δύο αυτές γραμμές.
Στην πρώτη γραμμή αναθέτουμε την συνάρτησή μας στην μεταβλητή aVariable. Δώστε προσοχή στην απουσία παραμέτρων. Αυτό συμβαίνει γιατί δεν θέλουμε να γίνει ανάθεση της συνάρτησής μας για δύο συγκεκριμένες τιμές αλλά του μηχανισμού της.
Έτσι, στην δεύτερη γραμμή, συμπεριφερόμαστε στην μεταβλητή aVariable σαν να είναι η συνάρτησή μας. Για αυτόν τον λόγο και η το όνομα της μεταβλητής μας ακολουθείται από την παρένθεση με τις παραμέτρους που θα ορίζαμε αν τρέχαμε την αρχική μας συνάρτηση. Δοκιμάστε το και θα διαπιστώσετε ότι το αποτέλεσμα είναι σωστό.
Επιστροφή του αποτελέσματος αντί για εκτύπωση
Ας δούμε άλλη μια εκδοχή της αγαπημένης μας συνάρτησης υπολογισμού του εμβαδού τριγώνου J.
def triangle_area_return(a, b): area = a * b / 2 return area
Σε αυτήν την εκδοχή της συνάρτησής μας ο προσεκτικός αναγνώστης παρατηρεί (εκτός από το διαφορετικό όνομα της συνάρτησης) μία ακόμη σημαντική διαφορά. Αντί για τη γραμμή εκτύπωσης του αποτελέσματος, χρησιμοποιούμε την δεσμευμένη λέξη return. Αυτή η αλλαγή έχει σαν αποτέλεσμα η τιμή του αποτελέσματος να επιστρέφεται αντί να εκτυπώνεται.
Έτσι, αν θέλουμε να εμφανίσουμε το αποτέλεσμα της συνάρτησης αυτής θα πρέπει να εκτελέσουμε την παρακάτω γραμμή κώδικα:
print( triangle_area_return( 5, 5 ) )
Δοκιμάστε να εκτελέσετε την ίδια γραμμή χωρίς να περικλείεται από την εντολή print( ) και θα διαπιστώσετε ότι τίποτε δε συμβαίνει.
Πως το χρησιμοποιώ πραγματικά;
Οι συναρτήσεις χρησιμοποιούνται συνήθως για να υλοποιούν συχνά χρησιμοποιούμενες διαδικασίες. Πολύ συχνά το αποτέλεσμα μιας συνάρτησης χρειάζεται να τροφοδοτήσει μία άλλη. Αυτό επιτυγχάνεται με τη χρήση της return. Ας το δούμε στην πράξη:
Υπενθυμίζω την τελευταία έκδοση της συνάρτησής μας:
def triangle_area_return(a, b): area = a * b / 2 return area
Δημιουργούμε μία δεύτερη, πολύ απλή συνάρτηση η οποία λαμβάνει στην είσοδο ένα εμβαδό και τυπώνει ένα ειδικά διαμορφωμένο μήνυμα…
def print_triangle_area_return(data):
print("Το εμβαδό του τριγώνου που διάβασα είναι:", data)
…στην τιμή myData ανατίθεται το αποτέλεσμα της συνάρτησης υπολογισμού του εμβαδού…
myData = triangle_area_return(2, 155)
…τέλος τροφοδοτούμε το περιεχόμενο του myData στην συνάρτηση εκτύπωσης:
print_triangle_area_return(myData)
Σε αυτό το άρθρο πήραμε μία γεύση από τα σημαντικότερα σημεία ορισμού και διαχείρισης συναρτήσεων σε Python. Μείνετε συντονισμένη για τη συνέχεια του οδηγού στον οποίο και θα ολοκληρωθεί το αντικείμενο αυτό.
Μέχρι τότε,
να είστε καλά και να φροντίζεται τον εαυτό σας.
Άν είστε ήδη συνδρομητής κάντε login με τα στοιχεία σας. Για να γίνετε συνδρομητής πατήστε εδώ




























Κανένα Σχόλιο