python之decorator AND 闭包

本文通过一个Python装饰器的实例介绍了闭包的概念及其工作原理。装饰器通过使用@语法糖来修改或增强函数的功能,而闭包则帮助保持装饰器内部的状态信息,即使在其外部作用域已经结束时也是如此。

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

先上代码

import functools

def log(func):
    @functools.wraps(func)
    def wrapper(*args, **kw):
        print('call %s():' % func.__name__)
        return func(*args, **kw)
    return wrapper

@log
def now():

    print("i'm working!")


分析:

理解闭包的概念
下cell中@log====相当于 now=log(now),now被赋值为wrapper,定义wrapper时用的func(now)是原来的func(now),因为闭包的原因。
闭包:定义wrapper时形成了闭包,log中的对象(func,wrapper)构成了一个整体环境。如下,log中,func被wrapper引用,log函数return后,func依旧被保存在了wrapper中。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值