Функсия дар функсия дар 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 шавад.