キーワード nonlocal とネストした関数
スコープの理解をさらに深めましょう。この演習では、ネストした関数の中でキーワード nonlocal を使い、外側のスコープで定義された変数の値を変更します。
この演習はコースの一部です
Pythonの関数入門
演習の手順
echo_wordに、文字列wordを自分自身と連結したものを代入します。- 外側のスコープにある
echo_wordの値を変更するために、キーワードnonlocalを使います。 echo_wordを、echo_wordに '!!!' を連結したものに変更します。- 関数
echo_shout()を、引数 'hello' を1つ渡して呼び出します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Define echo_shout()
def echo_shout(word):
"""Change the value of a nonlocal variable"""
# Concatenate word with itself: echo_word
____
# Print echo_word
print(echo_word)
# Define inner function shout()
def shout():
"""Alter a variable in the enclosing scope"""
# Use echo_word in nonlocal scope
____
# Change echo_word to echo_word concatenated with '!!!'
echo_word = ____
# Call function shout()
shout()
# Print echo_word
print(echo_word)
# Call function echo_shout() with argument 'hello'
____