Αποχρώσεις στην εργασία με εσωτερικές συναρτήσεις στην Python

Στην Python μπορούν να υπάρχουν όχι μόνο ένθετες συναρτήσεις, αλλά και μια συνάρτηση μπορεί να επιστρέφει μια άλλη. Για παράδειγμα, ας υποθέσουμε ότι η συνάρτηση outer επιστρέφει ως αποτέλεσμα τον πηγαίο κώδικα της συνάρτησης inner:

pythondef outer():
  def inner():
    return '+++'

  return inner

Ας γράψουμε την κλήση outer σε μια μεταβλητή res:

pythonres = outer()
print(res)

Μετά την εκτέλεση του κώδικα, θα εμφανιστεί ένα αντικείμενο με τη συνάρτηση:

python<function outer.<locals>.inner at 0x000001564A212B90>

Εάν καλέσουμε τη μεταβλητή res με γωνιώδεις αγκύλες, θα επιστραφεί το μήνυμα '+++':

pythonprint(res()) # θα εκτυπώσει '+++'

Μπορούμε να ξαναγράψουμε τον κώδικα έτσι ώστε στο res να γράφεται η outer με δύο ζεύγη γωνιωδών αγκύλων - για την κλήση της ίδιας της συνάρτησης και της συνάρτησης inner. Από αυτό προκύπτει ότι μπορούμε να γράφουμε επιπλέον γωνιώδεις αγκύλες δεξιά από την εξωτερική συνάρτηση ανάλογα με τον αριθμό των ένθετων συναρτήσεων σε αυτήν:

pythonres = outer()()
print(res) # θα εκτυπώσει '+++'
Задание 1

Δίνεται ο ακόλουθος κώδικας:

pythondef outer():
  def inner(num):
    return num + 2

  return inner
  
res = outer()(3)
print(res)

Πείτε τι θα εκτυπωθεί στην κονσόλα.

Задание 2

Δίνεται ο ακόλουθος κώδικας:

pythondef outer():
  def inner(txt):
    return 'hello, ' + txt

  return inner
  
res = outer()
print(res)

Πείτε τι θα εκτυπωθεί στην κονσόλα.