美文网首页
Python学习笔记10——装饰器

Python学习笔记10——装饰器

作者: 远航天下 | 来源:发表于2018-07-31 10:54 被阅读0次
代码如下:
author = 'damao'

import time

"""
python是用于拓展原来函数功能的一种函数;特殊之处在于它的返回值是一个函数,
使用装饰器的好处:不用更改原来函数的代码前提下给函数增加新的功能
"""
class TestOne(object):
    # 原始函数
    def test_func(self):
        print("holle")
        time.sleep(1)
        print("world")


class TestTwo(object):
    """使用原始方法修改函数内容,达到修改需求的目的"""
    def test_func(self):
        start_time = time.time()  # 获取当前时间
        print("holle")
        time.sleep(1)
        print("world")
        end_time = time.time()   # 获取结束时间
        sec = (end_time - start_time)/1000
        print("运行的总时间是:{a}".format(a=sec))


class TestThere(object):
    """避免直接侵入原函数修改,但是生效需要再次执行函数"""
    def test_func(self):
        print("holle")
        time.sleep(1)
        print("world")

    def sum_time(self):
        start_time = time.time()  # 获取当前时间
        self.test_func()
        end_time = time.time()  # 获取结束时间
        sec = (end_time - start_time) / 1000
        print("运行的总时间是:{a}".format(a=sec))

"""装饰器简单模型"""
def sum_time(test_func):
    def wrapper():
        start_time = time.time()  # 获取当前时间
        test_func()
        end_time = time.time()  # 获取结束时间
        sec = (end_time - start_time) / 1000
        print("运行的总时间是:{a}".format(a=sec))
    return wrapper

@sum_time
def test_func():
    print("holle")
    time.sleep(1)
    print("world")


"""带有参数的装饰器"""
def sum_time1(test_func1):
    def wrapper(a,b):
        start_time = time.time()  # 获取当前时间
        test_func1(a,b)
        end_time = time.time()  # 获取结束时间
        sec = (end_time - start_time) / 1000
        print("运行的总时间是:{a}".format(a=sec))
    return wrapper

@sum_time1
def test_func1(a,b):
    print("二个数之和是:",a+b)
    return a + b

"""不定参数的装饰器"""
def sum_time2(func):
    def wrapper(*args,**kwargs):
        start_time = time.time()  # 获取当前时间
        func(*args,**kwargs)
        end_time = time.time()  # 获取结束时间
        sec = (end_time - start_time) / 1000
        print("运行的总时间是:{a}".format(a=sec))
    return wrapper

@sum_time2
def test_func2(a,b):
    print("二个数之和是:",a+b)
    return a + b

@sum_time2
def test_func3(a,b,c):
    print("几个数之和是:",a + b + c)
    return a + b + c


"""多个装饰器"""
def sum_01(func):
    def wrapper(*args,**kwargs):
        start_time = time.time()  # 获取当前时间
        func(*args,**kwargs)
        end_time = time.time()  # 获取结束时间
        sec = (end_time - start_time) / 1000
        print("运行的总时间是:{a}".format(a=sec))
    return wrapper

def sum_02(func):
    def wrapper(*args,**kwargs):
        a = func(*args,**kwargs)
        b = a * 100
        print(b)
    return wrapper

@sum_01
@sum_02
def aaa(a,b):
    print("二个数之和是:",a+b)
    return a + b


if __name__=="__main__":
    aaa(12,12)

相关文章

  • 大师兄的Python学习笔记(十四): 迭代器、生成器和协程

    大师兄的Python学习笔记(十三): 理解装饰器大师兄的Python学习笔记(十五): Socket编程 一、关...

  • Python ☞ day 5

    Python学习笔记之 装饰器& 偏函数 & 异常处理 & 断言 & 文件读写 &编码与解码 装饰器 概念:是一个...

  • Python学习笔记10——装饰器

    代码如下:

  • Python—闭包与装饰器

    将之前学习Python的笔记整理记录下来。 闭包 装饰器

  • 装饰器模式

    介绍 在python装饰器学习 这篇文章中,介绍了python 中的装饰器,python内置了对装饰器的支持。面向...

  • python中的装饰器

    python装饰器详解 Python装饰器学习(九步入门) 装饰器(decorator) 就是一个包装机(wrap...

  • 2022-10-27

    10个美妙的Python装饰器对Python编程语言中我最喜欢的一些装饰器的概述。 简介 关于Python编程...

  • TypeScript: 类的装饰器(三)

    带参数的类的装饰器 学习 python 的同学应该知道,python 中也有装饰器,而且 python 中的众多框...

  • python学习笔记----装饰器

    装饰器 实质: 是一个函数参数:是你要装饰的函数名(并非函数调用)返回:是装饰完的函数名(也非函数调用)作用:为已...

  • Python学习笔记·装饰器

    给一个函数添加新功能 1. 装饰器介绍 如上面代码所示,装饰器是一个函数 可调用对象,接收一个函数作为参数,并将其...

网友评论

      本文标题:Python学习笔记10——装饰器

      本文链接:https://www.haomeiwen.com/subject/himcvftx.html