Python-da daxili funksiya ile işin nüansları

Python-da təkcə daxili funksiyalar ola bilməz, həm də bir funksiya digərini qaytara bilər. Məsələn, outer funksiyası nəticə olaraq inner funksiyasının mənbə kodunu qaytarsın:

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

  return inner

Gəlin outer çağırışını res dəyişəninə yazaq:

pythonres = outer()
print(res)

Kodu icra etdikdən sonra funksiya olan obyekt çıxılacaq:

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

Əgər res dəyişəni dəyirmi mötərizələrlə çağırılsa, '+++' mesajı qaytarılacaq:

pythonprint(res()) # '+++' çıxardacaq

Kodu res-də outer-in özünü və inner funksiyasını çağırmaq üçün iki dəyirmi mötərizə ilə yazıla biləcəyi şəkildə dəyişmək olar. Buradan belə nəticə çıxır ki, xarici funksiyanın sağında, içinə daxil edilmiş funksiyaların sayı qədər əlavə dəyirmi mötərizə yazmaq olar:

pythonres = outer()()
print(res) # '+++' çıxardacaq
Задание 1

Aşağıdakı kod verilmişdir:

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

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

Konsola nə çıxarılacağını deyin.

Задание 2

Aşağıdakı kod verilmişdir:

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

  return inner
  
res = outer()
print(res)

Konsola nə çıxarılacağını deyin.