始める無料で始める

キーワード 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'
____
コードを編集して実行