11-函数闭包与装饰器用法详解

本文深入探讨了Python中的函数闭包和装饰器。首先介绍了嵌套作用域和闭包,通过示例展示了如何创建和使用闭包,强调了闭包在保持状态方面的关键作用。接着讲解了nonlocal关键字,用于在内嵌函数中修改嵌套作用域的变量。然后详细阐述了装饰器的基本原理、语法糖、一般化装饰器函数的应用,并通过实例展示了如何创建带有参数的装饰器。最后总结了闭包和装饰器的重要性和应用场景。
摘要由CSDN通过智能技术生成

0.本集概览

1.嵌套作用域与闭包现象
2.nonlocal关键字与内嵌作用域变量修改
3.装饰器到底是什么
4.装饰器的用法和语法糖
5.装饰器如何添加额外参数

回顾一下上一集所讲的,上一集里我们介绍了变量的LEGB索引机制:对一个变量,首先在本地(函数内)查找;之后查找嵌套函数的本地作用域,然后再是查找当前的全局作用域。

1.嵌套作用域与函数闭包

到目前为止,我们还有一个作用域没有介绍,就是嵌套作用域,即E,他是嵌套函数的本地作用域。

1.1.嵌套函数

**首先说说什么是嵌套函数。**Python有一个很有意思的地方,就是def函数可以嵌套在另一个def函数之中。调用外层函数时,运行到的内层def语句仅仅是完成对内层函数的定义,而不会去调用内层函数,除非在嵌套函数之后又显式的对其进行调用。
代码片段:

x = 99

def f1():
    x = 88
    def f2():
        print(x)
    f2()

f1()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

石 溪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值