Funkcija funkcijā Python

Python iekšā vienās funkcijās var deklarēt citas. Pieņemsim, ka mums ir ārējā funkcija outer, kuras iekšpusē atrodas funkcija inner:

pythondef outer():
  def inner():
    pass

Iepriekš minētais piemērs izskatās pietiekami vienkārši. Tomēr bieži rodas situācijas, kad funkcijas outer pamattekstā, izņemot inner, tiek izpildītas arī citas darbības. Lai vienkāršotu kodu, varēja iznest inner uz ārējo koda bloku, taču šī funkcija tiks izmantota tikai vienu reizi un tikai funkcijas outer iekšienē. Tāpēc to iznest ārpusē nav jēgas.

Apskatīsim piemēru, kad funkcijai outer tiek nodots saraksts. Un ar funkcijas inner palīdzību skaitliskais saraksta elements tiks pacelts kvadrātā. Lai to izdarītu, pēc funkcijas inner deklarējam tukšu sarakstu res, kurā tiks uzkrāti elementi, kas ciklā pacelti kvadrātā:

pythondef outer(lst):
  def inner(num):
    return num ** 2

  res = []

  for el in lst:
    res.append(inner(el))

  return res

Izsauksim funkciju outer, padodam tai parametru sarakstu un izvadām rezultātu konsolē:

pythonprint(outer([2, 3, 5])) # izvadīs [4, 9, 25]
Задание 1

Uzrakstiet ārējo un iekšējo funkciju, kuru kopīgais darbs izvadīs katru virknes elementu sarakstā ar lielo burtu.

Задание 2

Dotas funkcijas:

pythondef func1(num):
  if num > 0:
    num += 2
  return num
  
def func2(iter):
  res = []
  for el in iter:
    res.append(func1(el))

  return res

Pārrakstiet kodu tā, lai func1 būtu iekšējā funkcija priekš func2.