Kehalusan Semasa Bekerja dengan Fungsi Dalaman dalam Python

Dalam Python, bukan sahaja boleh terdapat fungsi bersarang, malah satu fungsi boleh memulangkan fungsi yang lain. Sebagai contoh, katakan fungsi outer memulangkan kod sumber fungsi inner sebagai hasil:

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

  return inner

Mari kita rakam panggilan outer ke dalam pembolehubah res:

pythonres = outer()
print(res)

Selepas kod dilaksanakan, objek dengan fungsi akan dipaparkan:

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

Jika pembolehubah res dipanggil dengan tanda kurung, mesej '+++' akan dipulangkan:

pythonprint(res()) # akan memaparkan '+++'

Kod boleh ditulis semula supaya res merakamkan outer dengan dua tanda kurung - untuk memanggil dirinya sendiri dan fungsi inner. Ini bermakna tanda kurung tambahan boleh ditulis di sebelah kanan fungsi luaran sebanyak bilangan fungsi yang bersarang di dalamnya:

pythonres = outer()()
print(res) # akan memaparkan '+++'
Задание 1

Diberi kod berikut:

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

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

Beritahu apa yang akan dipaparkan dalam konsol.

Задание 2

Diberi kod berikut:

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

  return inner
  
res = outer()
print(res)

Beritahu apa yang akan dipaparkan dalam konsol.