python基础之闭包、装饰器

一、闭包

1、闭包的概念:

闭包是一个函数,可以访问到另一个函数的作用域。

2、闭包的特点:

1. 存在内外层函数嵌套的情况

2. 内层函数引用了外层函数的变量或者参数(自由变量)

3. 外层函数把内层的这个函数本身当作返回值进行返回,而不是返回内层函数产生的某个值

4、闭包可以访问到父级函数的变量,且该变量不会销毁

二、装饰器

1、概念

装饰器就是提供了一些额外的功能

注意:多个装饰器的运行方式 是由下到上

2、代码

def outfunc(func):
    def infunc(*args,**kwargs):
        func(*args,**kwargs)
        print("日志纪录")
    return infunc
​
@outfunc   # 相当于  func1 = outfunc(func1)
def func1():
    print("使用功能1")

三、wraps装饰器

functool.wraps可以将原函数对象的指定属性赋值给包装函数对象,默认有module、name、doc,或者通过参数选择。


from functools import wraps
def outfunc(func):
    @wraps(func)
    def infunc(*args,**kwargs):
        func(*args,**kwargs)
        print("日志纪录")
    return infunc
​
@outfunc   # 相当于  func1 = outfunc(func1)
def func1():
    print("使用功能1")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

allen wy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值