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() : 字典,查看全局变量,包含系统内容;

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值