python 装饰器简介

python 装饰器简介,第1张

遇事不要慌~

各种各样的项目源码,都有使用@,这就是装饰器的语法,写下最简单的装饰器用法;

如果我们想知道一个函数的执行时间,怎么办呢

import time

'''
装饰器demo
'''
st = time.time()
def inner_func():
    print(f'I am inner function')
    time.sleep(2)
end = time.time()

print(f'{inner_func.__name__}执行时间是{end - st}')
inner_func执行时间是1.1920928955078125e-06

如果每个函数都想知道时间呢,,那每个都写个time.time(),😄

简单点的话我们可以写个装饰器,装饰器的特殊之处为输出为函数,只不过这个函数,在原输入函数的基础上,加了一些功能:

def runtime(func):
    def wrap():
        st = time.time()
        func()
        end = time.time()
        print(f'{func.__name__}执行时间是{end - st}s')
    return wrap

 这里将输入的func,包裹了一层执行时间功能,返回是包裹后的函数wrap

这里我们执行一下:

def inner_func():
    print(f'I am inner function')
    time.sleep(2)

def runtime(func):
    def wrap():
        st = time.time()
        func()
        end = time.time()
        print(f'{func.__name__}执行时间是{end - st}s')
    return wrap


warp = runtime(inner_func)
warp()
I am inner function
inner_func执行时间是2.0001890659332275s

再简洁一点,就是我们的装饰器,在函数上加上@runtime即可


'''
装饰器demo
'''
def runtime(func):
    def wrap():
        st = time.time()
        func()
        end = time.time()
        print(f'{func.__name__}执行时间是{end - st}s')
    return wrap

@runtime
def inner_func():
    print(f'I am inner function')
    time.sleep(2)

inner_func()

result: 

I am inner function
inner_func执行时间是2.002408981323242s

很简单的demo,有问题大家可以私信评论交流!

最后,欢迎一键三连😄 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/715138.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存