Python入门11——内部函数和nonlocal关键字

内部函数顾名思义就是在函数内部定义函数,因此,也就有了外部函数这个名词。内部函数可以直接修改和使用外部函数的可变类型变量;对于不可变类型变量(数字、字符串、元组等)可直接使用,但是若要修改则需要使用关键字 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关键字

该关键字的作用就是,在内部函数中声明外部函数不可变类型的变量,使得在内部函数中可以修改该变量,在上面的例子中已经能够明确的说明。

另外,在这里介绍两个函数:

locals() : 字典,查看当前函数中的局部变量;

globals() : 字典,查看全局变量,包含系统内容;

 

你可能感兴趣的:(Python)