10 - 函数嵌套-作用域-闭包-LEGB-函数销毁

本文详细介绍了Python中的函数嵌套、作用域概念,包括全局与局部作用域,以及如何使用global和nonlocal关键字。深入探讨了闭包的形成与自由变量,强调了闭包中变量的特殊性。此外,还讨论了默认值的作用域问题和LEGB变量查找原则,最后提到了函数的销毁情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 函数嵌套

        一个函数中存在另外一个函数(定义/调用),这种方式我们称之为函数嵌套。所以:函数的嵌套主要分为嵌套调用,以及嵌套定义

函数的嵌套调用
def max2(a,b):   # 判断两个变量的最大值
    return a if  a > b else b
 
def max4(a,b,c,d):  # 判断四个变量的最大值
    res1 = max2(a,b)  # 函数的嵌套调用
    res2 = max2(res1,c)
    res3 = max(res2,d)
    print(res3)
 
max4(10,100,21,99)


函数的嵌套定义
def func1():
    print('from func1')
    def func2():
        print('from func2')
        def func3():
            print('from func3')
        func3()  # 只有在func2中才能调用内部定义的函数func3
    func2()
 
func1()

注意:在函数的内部定义函数,只能在函数内部进行调用,在其他地方是无法进行调用,强行调用就会提示NameError异常,所以说函数是有可见范围的,这就涉及到了作用域了

2 作用域

        一个标识符的可见范围,叫做标识符的作用域。一般常说的是变量的作用域。根据作用的范围主要分为全局作用域局部作用域

  • 全局作用域:在整个程序运行环境中都可见
  • 局部作用域:在函数、类的内部可见,并且使用范围不能超过所在的局部作用域(比如在函数内部定义了一个变量x,我在全局使用变量x是不行的。)
x = 1   # 全局变量
def outer<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值