0402函数的有用信息 ,带参数的装饰器 , 多个装饰器装饰一个函数

本文介绍了Python中装饰器的基本概念及应用实例,包括无参数装饰器、带参数的装饰器以及多个装饰器装饰同一个函数的情况,并提供了详细的代码示例。

一、函数的有用信息

def func():
    '''
此函数的作用是拯救世界
'''
    print(666)
    return 666
func()
print(func.__name__)   #调出函数名
print(func.__doc__)    #调出注释

二、带参数的装饰器

带参数的装饰器可以让装饰器像函数一样传参

import
time def timmer(*args,**kwargs): def wrapper(f): def inner(*args,**kwargs): if flag: start_time = time.time() ret = f(*args,**kwargs) time.sleep(0.3) end_time = time.time() print('此函数的执行效率%f' % (end_time-start_time)) else: ret = f(*args, **kwargs) return ret return inner return wrapper flag = True @timmer(flag,2,3) # 两步:1,timmer(flag) --> wrapper 2,@wrapper 装饰器 def func1():     print(666) @timmer(flag) def func2(): print(777) func1() func2()

三、多个装饰器装饰一个函数

def wrapper1(func):  # func ==  f函数名
    def inner1():
        print('wrapper1 ,before func')  # 2
        func()
        print('wrapper1 ,after func')  # 4
    return inner1

def wrapper2(func):  # func == inner1
    def inner2():
        print('wrapper2 ,before func')  # 1
        func()
        print('wrapper2 ,after func')  # 5
    return inner2
@wrapper3
@wrapper2  #  f = wrapper2(f)  里面的f==inner1  外面的f == inner2
@wrapper1  # f = wrapper1(f)   里面的f==函数名f  外面的f == inner1
def f():  # 3
    print('in f')
f()  # inner2()
 

 

转载于:https://www.cnblogs.com/Mr-Murray/p/8692268.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值