python基础(十二)—函数(四)
开放封闭原则
函数的开放封闭原则就是对函数内部修改进行封闭,对函数扩展开放。
如果想要查看函数的注释应该怎么办呢?
def wrapper(func): def inner(*args, **kwargs): '''lala''' func(*args, **kwargs) '''wa''' return func(*args, **kwargs) return inner @wrapper def index(): '''我草 :return 1''' print(index.__doc__) #查看函数注释的内容 print(index.__name__) #查看函数名
#此时输出的是inner函数,是因为我们用装饰器把函数index装饰了,如果想要打印被装饰器装饰的函数名及注释内容就需要引用到functools模块
#此时引用functools模块
from functools import wraps def wrapper(func): @wraps(func) def inner(*args, **kwargs): '''lala''' func(*args, **kwargs) '''wa''' return func(*args, **kwargs) return inner @wrapper def index(): '''我草 :return 1''' print(index.__doc__) print(index.__name__)
#此时输出的就是index函数和注释内容
带参数的装饰器
import time flag = True #设置一个标志位。 def timer_out(f): def timer(func): def inner(*args,**kwargs): if f: start_time = time.time() time.sleep(0.1) func(*args,**kwargs) end_time = time.time() ret= end_time - start_time print('执行效率%s'%ret) return ret else:func(*args,**kwargs) return inner return timer @timer_out(flag) #此时 timer_out = timer def f1(): print(11) f1()
多个装饰器装饰一个函数