Αποχρώσεις στην εργασία με εσωτερικές συναρτήσεις στην Python
Στην Python μπορούν να υπάρχουν όχι μόνο ένθετες
συναρτήσεις, αλλά και μια συνάρτηση μπορεί να επιστρέφει
μια άλλη. Για παράδειγμα, ας υποθέσουμε ότι η συνάρτηση outer
επιστρέφει ως αποτέλεσμα τον πηγαίο κώδικα
της συνάρτησης inner:
def outer():
def inner():
return '+++'
return inner
Ας γράψουμε την κλήση outer
σε μια μεταβλητή res:
res = outer()
print(res)
Μετά την εκτέλεση του κώδικα, θα εμφανιστεί ένα αντικείμενο με τη συνάρτηση:
<function outer.<locals>.inner at 0x000001564A212B90>
Εάν καλέσουμε τη μεταβλητή res με
γωνιώδεις αγκύλες, θα επιστραφεί το μήνυμα
'+++':
print(res()) # θα εκτυπώσει '+++'
Μπορούμε να ξαναγράψουμε τον κώδικα έτσι ώστε στο res
να γράφεται η outer με δύο ζεύγη γωνιωδών αγκύλων
- για την κλήση της ίδιας της συνάρτησης και της συνάρτησης
inner. Από αυτό προκύπτει ότι μπορούμε
να γράφουμε επιπλέον γωνιώδεις αγκύλες
δεξιά από την εξωτερική συνάρτηση ανάλογα με τον αριθμό
των ένθετων συναρτήσεων σε αυτήν:
res = outer()()
print(res) # θα εκτυπώσει '+++'
Δίνεται ο ακόλουθος κώδικας:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Πείτε τι θα εκτυπωθεί στην κονσόλα.
Δίνεται ο ακόλουθος κώδικας:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Πείτε τι θα εκτυπωθεί στην κονσόλα.