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()

多个装饰器装饰一个函数

 

posted @ 2018-02-05 19:40  小黑啊小黑  阅读(128)  评论(0编辑  收藏  举报