zoukankan      html  css  js  c++  java
  • python基础十之装饰器

      1,装饰器的形成

        编程原则:开放封闭原则。

        开放:对扩展是开放的

        封闭:对修改是封闭的

      因为修改是封闭的,所以为了对函数进行功能的扩展,就使用装饰器!

      2,装饰器的定义

    # wrapper就是一个装饰器函数,就是对一个函数有一些装饰效果
    def wrapper(f):   # 装饰器函数,f是被装饰的函数
        def inner(*args, **kwargs):
            # 在被装饰函数之前想增加的功能
            ret = f(*args, **kwargs)     # 被装饰的函数
            # 在被装饰函数之后想增加的功能
            return ret   # 接收被装饰函数的返回值
        return inner
    # 装饰器的作用:不修改函数的调用方式,且能在函数的前后添加功能

      3,装饰器的使用

    @wrapper    # 语法糖 @装饰器函数名 相当于func = time_count(func)
    def func():    # 被装饰的函数
        time.sleep(1)
        print('zxc')
        return 'hahaha'
    ret = func()  # zxc
    print(ret)    # hahaha

      4,装饰器实例

    import time
    # 计算函数运行时间
    def wrapper(f):   # 装饰器函数,f是被装饰的函数
        def inner(*args, **kwargs):
            start = time.time()
            ret = f(*args, **kwargs)     # 被装饰的函数
            end = time.time()
            print(end-start)
            return ret   # 接收被装饰函数的返回值
        return inner
    
    @wrapper
    def func():    # 被装饰的函数
        print('zxc')
    func()  # 打印zxc 打印函数hunc的运行时间
  • 相关阅读:
    HTML <input> 标签
    HTML5 <input> type 属性
    静态页面与动态页面
    string::size_type 页73 size_t 页90
    template method(模板方法)
    C++中创建对象的时候加括号和不加括号的区别(转)
    _declspec(dllexport)和.def(转)
    智能指针
    C++中的delete加深认识
    工厂方法(整理自李建忠<C++设计模式>视频)
  • 原文地址:https://www.cnblogs.com/zxc-Weblog/p/8135061.html
Copyright © 2011-2022 走看看