Pythonにおける内部関数の扱いに関する注意点

Pythonでは、ネストされた関数があるだけでなく、ある関数が別の関数を返すこともできます。例えば、関数outerが関数innerのソースコードを結果として返すとします:

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

  return inner

変数resに関数outerの呼び出しを代入してみましょう:

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)

コンソールに何が出力されるか答えなさい。