Hàm bên trong hàm trong Python

Trong Python, bên trong một hàm có thể khai báo các hàm khác. Giả sử chúng ta có một hàm bên ngoài outer, bên trong nó có chứa hàm inner:

pythondef outer():
  def inner():
    pass

Ví dụ trên trông khá đơn giản. Tuy nhiên, thường có những tình huống khi trong thân hàm outer ngoài inner còn thực hiện các thao tác khác. Để đơn giản hóa mã, có thể đưa inner ra khối mã bên ngoài, nhưng hàm này sẽ chỉ được sử dụng một lần và chỉ bên trong hàm outer. Vì vậy, việc đưa nó ra ngoài không có ý nghĩa.

Hãy xem xét một ví dụ, khi một danh sách được truyền vào hàm outer. Và với sự trợ giúp của hàm inner, phần tử số của danh sách sẽ được nâng lên lũy thừa bình phương. Để làm điều này, sau hàm inner chúng ta khai báo một danh sách rỗng res, trong đó sẽ tích lũy các phần tử được nâng lên bình phương trong vòng lặp:

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

  res = []

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

  return res

Hãy gọi hàm outer, truyền cho nó tham số là một danh sách và in kết quả ra console:

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

Viết một hàm bên ngoài và một hàm bên trong, việc phối hợp hoạt động của chúng sẽ in ra mỗi phần tử chuỗi trong danh sách với chữ cái đầu viết hoa.

Задание 2

Cho các hàm:

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

  return res

Viết lại mã sao cho func1 là hàm bên trong của func2.