პითონში შიდა ფუნქციებთან მუშაობის ნიუანსები

პითონში შეიძლება არსებობდეს არა მხოლოდ ჩადგმული ფუნქციები, არამედ ერთი ფუნქცია შეიძლება დააბრუნებდეს მეორეს. მაგალითად, დავუშვათ ფუნქცია outer აბრუნებს როგორც შედეგს ფუნქციის inner საწყის კოდს:

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

  return inner

დავწეროთ გამოძახება outer ცვლადში res:

pythonres = outer()
print(res)

კოდის შესრულების შემდეგ გამოიტანება ობიექტი ფუნქციით:

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

თუ კი გამოვიძახებთ ცვლადს res მრგვალი ფრჩხილებით, დააბრუნებს შეტყობინებას '+++':

pythonprint(res()) # გამოიტანს '+++'

შესაძლებელია კოდის ამგვარად გადაწერა, რომ resში ჩაიწეროს outer ორი მრგვალი ფრჩხილით - თავისთავად და ფუნქციის inner გამოსაძახებლად. აქედან გამომდინარეობს, რომ შესაძლებელია დამატებითი მრგვალი ფრჩხილების ჩაწერა გარე ფუნქციის მარჯვნივ იმ რაოდენობის მიხედვით, რამდენჯერაც ის ჩადგმულია მასში:

pythonres = outer()()
print(res) # გამოიტანს '+++'
Задание 1

მოცემულია შემდეგი კოდი:

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

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

თქვით, რა გამოიტანს კონსოლში.

Задание 2

მოცემულია შემდეგი კოდი:

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

  return inner
  
res = outer()
print(res)

თქვით, რა გამოიტანს კონსოლში.