ネストした関数 II
素晴らしいです。関数の中に別の関数をネストできました。関数をネストするもう一つの面白い理由は、クロージャという考え方です。これは、ネストした(内側の)関数が、呼び出されたときに外側のスコープの状態を覚えていることを意味します。つまり、外側のスコープでローカルに定義されたものは、外側の関数の実行が終わった後でも、内側の関数から参照できます。
では先に進みましょう!この演習では、内側の関数 inner_echo() の定義を完成させ、その後 echo() を異なる引数で2回呼び出します。演習を完了して、どんな出力になるか確かめてみてください!
この演習はコースの一部です
Pythonの関数入門
演習の手順
- 内側の関数のヘッダーを、関数名
inner_echo()と単一の引数word1で完成させてください。 - 関数
echo()を、inner_echoを返すように完成させてください。 - すでに
echo()に 2 を渡して呼び出し、その戻り値をtwiceに代入してあります。次は、echo()に 3 を渡して呼び出し、その戻り値をthriceに代入してください。 - Submit を押して
twice()とthrice()を呼び出し、結果を出力します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Define echo
def echo(n):
"""Return the inner_echo function."""
# Define inner_echo
def ____(____):
"""Concatenate n copies of word1."""
echo_word = word1 * n
return echo_word
# Return inner_echo
# Call echo: twice
twice = echo(2)
# Call echo: thrice
# Call twice() and thrice() then print
print(twice('hello'), thrice('hello'))