Συνάρτηση μέσα σε συνάρτηση στην Python
Στην Python, μέσα σε μια συνάρτηση μπορούμε να δηλώσουμε
άλλες. Ας υποθέσουμε ότι έχουμε μια εξωτερική συνάρτηση
outer, μέσα στην οποία βρίσκεται η
συνάρτηση inner:
def outer():
def inner():
pass
Το παραπάνω παράδειγμα φαίνεται αρκετά
απλό. Ωστόσο, συχνά υπάρχουν περιπτώσεις όπου
στο σώμα της συνάρτησης outer εκτός από την
inner εκτελούνται και άλλες
λειτουργίες. Για απλοποίηση του κώδικα θα μπορούσε
να βγει η inner στο εξωτερικό μπλοκ
κώδικα, ωστόσο αυτή η συνάρτηση θα χρησιμοποιηθεί
μόνο μία φορά και μόνο μέσα στη συνάρτηση
outer. Επομένως, δεν έχει νόημα να
βγει έξω από τα όριά της.
Ας δούμε ένα παράδειγμα, όπου στη συνάρτηση
outer μεταβιβάζεται μια λίστα. Και με τη βοήθεια
της συνάρτησης inner το αριθμητικό στοιχείο
της λίστας θα υψώνεται στο τετράγωνο.
Για αυτό, μετά τη συνάρτηση inner
δηλώνουμε μια κενή λίστα res, στην
οποία θα συσσωρεύονται τα στοιχεία
που υψώθηκαν στο τετράγωνο σε έναν βρόγχο:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
Ας καλέσουμε τη συνάρτηση outer,
να της μεταβιβάσουμε ως παράμετρο τη λίστα και να εμφανίσουμε
το αποτέλεσμα στην κονσόλα:
print(outer([2, 3, 5])) # θα εμφανίσει [4, 9, 25]
Γράψτε μια εξωτερική και μια εσωτερική συνάρτηση, των οποίων η κοινή εργασία θα εμφανίζει κάθε συμβολοσειρικό στοιχείο της λίστας με κεφαλαίο γράμμα.
Δίνονται συναρτήσεις:
def func1(num):
if num > 0:
num += 2
return num
def func2(iter):
res = []
for el in iter:
res.append(func1(el))
return res
Ξαναγράψτε τον κώδικα έτσι ώστε η func1
να είναι εσωτερική συνάρτηση της func2.