zoukankan      html  css  js  c++  java
  • 函数三 ——装饰器函数

    一、装饰器的本质:一个闭包函数

      装饰器的功能:在不修改原函数及其调用方式的情况下对原函数功能进行扩展

      

    import time
    def func1():  #被装饰的函数
        print('in func1')
    def timmer(func):  #装饰器函数
        def inner():
            start = time.time()
            func()
            end = time.time()
            print(end - start)        
        return inner
    func1 = timmer(func1)
    func1()
    import time
    def timmer(func):  #装饰器函数
        def inner():
            start = time.time()
            func()
            end = time.time()
            print(end - start)
        return inner
    @timmer   #语法糖   @装饰器函数名    #==> func1 = timmer(func1)
    def func1():  #被装饰的函数
        print('in func1')
    func1()

    装饰一个带参数的函数

    import time
    def timmer(func):
        def inner(m):
            start = time.time()
            func(m)
            end = time.time()
            print(end - start)
        return inner
    @timmer  #===>func1 = timmer(func1)
    def func1(a):
        print(a)
    func1(5)

    被修饰函数中带有返回值

    import time
    def timmer(f):  #装饰器函数
        def inner():
            start = time.time()
            ret = f()    #被装饰的函数
            end = time.time()
            print(end - start)
            return ret
        return inner
    @timmer                #语法糖   @装饰器函数名
    def func():             #被装饰的函数
        time.sleep(0.1)
        print('hello world')
        return '新年好'
    # func = timmer(func)
    ret = func()
    print(ret)
  • 相关阅读:
    MySQL学习笔记:repeat、loop循环
    链表//相交链表
    单位和值
    链表//环形链表 II
    css样式设置小技巧
    链表//环形链表
    CSS代码缩写,占用更少的带宽
    CSS布局模型
    CSS盒模型
    CSS格式化排版
  • 原文地址:https://www.cnblogs.com/huangjm263/p/8136387.html
Copyright © 2011-2022 走看看