Python入門11-内部関数とnonlocalキーワード

1069 ワード

内部関数はその名の通り関数内部に関数を定義するので,外部関数という名詞もある.内部関数は、外部関数の可変タイプ変数を直接変更し、使用することができます.可変型変数(数値、文字列、メタグループなど)は直接使用できますが、変更するにはキーワードnonlocalキーワード宣言を使用する必要があります.
1、内部関数の権限問題
(1)内部関数は外部関数の変数にアクセスできる.
(2)外部関数の可変型変数を変更することができる.
(3)内部関数では、グローバル変数を変更するにはglobalキーワード宣言が必要である.外部関数の可変型変数を変更するにはnonlocalキーワード宣言を追加する必要があります.
num01 = 1


def fun01():
    num02 = 2
    s = 'apple'
    lst = {1, 2, 3}

    def fun02():
        nonlocal num02
        global num01
        num01 += 1     #       
        s = 'melon'     #     s    fun02()       
        num02 += 3      #          
        lst.add(4)      #         
        print(s)     # s = 'melon'
        print(num01)    # num01 = 2
        print(num02)    # num02 = 5
        print(lst)     # lst = {1,2,3,4}

    print(s)    #     :s = 'apple'
    fun02()

2、nonlocalキーワード
このキーワードの役割は,内部関数に外部関数の可変型の変数を宣言し,内部関数でその変数を修正できるようにすることであり,上記の例では明確に説明できる.
また、ここでは2つの関数について説明します.
locals():辞書、現在の関数のローカル変数を表示します.
globals():辞書、システムの内容を含むグローバル変数を表示します.