ფუნქცია ფუნქციაში 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-ისთვის.