【python进阶】函数装饰器和类装饰器

1.闭包

        闭包就是一个函数中在嵌套一个函数,并嵌套的这个函数引用外部变量,那么这被嵌套的函数就是一个闭包。示例:

def entry(name):
    def inner():
        return f'my name is {name}'
    return inner

output = entry("李四")()
print(output)


-------------------------输出-------------------------
my name is 李四

在这个entry函数里边嵌套了一个函数inner,然后return 这个函数,那么entry("李四")的返回值就是一个可调用的对象,就可以写成:entry("李四")(),

同时被嵌套的函数也可以接受参数,  像这样调用:entry("李四")(20)

def entry(name):
    
    def inner(age):
        return f'my name is {name}, age: {age}'
    return inner

output = entry("李四")(20)
print(output)

-------------------------输出-------------------------
my name is 李四, age: 20

2.使用函数实现装饰器

python的装饰器其实也就是闭包的一种应用,它的返回值也是一个扩展了功能的函数。我先来看一下使用函数实现的装饰器。

在下面的例子中:这个“timer”就是一个装饰器,它的作用打印函数的执行消耗时间。它接受一个函数,并返回一个函数wrapper。

import time


def timer(func):
    def wrapper(*args, **kwarg):
        start = time.time()
        ret = func(*args, **kwarg)
        print(f'函数: {func.__name__}, 耗时:{time.time() - start}')
        retur
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值