Pythonにおける関数内関数

Pythonでは、ある関数の内部で他の関数を宣言することができます。 外部関数 outer があり、その内部に関数 inner があるとします:

pythondef outer():
  def inner():
    pass

上記の例は十分にシンプルに見えます。 しかし、多くの場合、関数 outer の本体では、 inner 以外の操作も実行されます。 コードを簡略化するために、inner を外部のコードブロックに 移動することも考えられますが、この関数は一度だけ、 しかも関数 outer の内部でのみ使用されます。 したがって、そのスコープ外に出す意味はありません。

関数 outer にリストが渡され、 関数 inner を使用してリストの数値要素を 2乗する例を見てみましょう。 このため、関数 inner の後に空のリスト res を宣言し、 ループ内で2乗された要素を累積していきます:

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

  res = []

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

  return res

関数 outer を呼び出し、 パラメータとしてリストを渡して結果をコンソールに出力してみましょう:

pythonprint(outer([2, 3, 5])) # [4, 9, 25] を出力
Задание 1

リストの各文字列要素を大文字で始まるように出力する、 外部関数と内部関数を作成してください。

Задание 2

以下の関数が与えられています:

pythondef 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 の内部関数となるようにコードを書き直してください。