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:
def outer():
def inner():
return '+++'
return inner
Gəlin outer çağırışını res
dəyişəninə yazaq:
res = outer()
print(res)
Kodu icra etdikdən sonra funksiya olan obyekt çıxılacaq:
<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:
print(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:
res = outer()()
print(res) # '+++' çıxardacaq
Aşağıdakı kod verilmişdir:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Konsola nə çıxarılacağını deyin.
Aşağıdakı kod verilmişdir:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Konsola nə çıxarılacağını deyin.