Python中装饰器的用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中装饰器的用法相关的知识,希望对你有一定的参考价值。

  1. 定义:
    1. 装饰器本身就是一个函数
    2. 为其他函数提供附加功能
      1. 不改变源代码
      2. 不改变原调用方式
    3. 装饰器=高阶函数+嵌套函数
  2. 知识点:
    1. 函数本身就是一个变量(意味着可以被复制给一个变量:test=test(1) )
    2. 高阶函数
      1. 把函数名当成一个实参传递给另一个函数func(test1) (不改变源代码的前提下添加代码)
      2. 返回值中包含函数名return deco (不改变函数的调用方式)
    3. 嵌套函数:函数中加入新的函数def func1(): def func2():
  3. 典型结构:   
技术分享
1 def func1(test):
2     def deco():
3         #progress
4     return deco#返回函数的地址,达到不改变调用方式的目的
View Code

完整程序:

技术分享
# __Author__Panda-J____

import time


def timer(func):  # for test1 & 2
    start_time = time.time()
    func()  # run func and test its running time
    end_time = time.time()
    print("this func running time is %s" % (end_time - start_time))
return func

@timer
def test1():
    time.sleep(1)
    print("this is test1")


@timer
def test2():
    time.sleep(1)
    print("this is test2")


test1()
test2()
View Code

 

以上是关于Python中装饰器的用法的主要内容,如果未能解决你的问题,请参考以下文章

Python编程系列---Python中装饰器的几种形式及万能装饰器

php中装饰器的完整继承行为

python自动化测试中装饰器@ddt和@data源码解析

Flask-RESTful中装饰器的使用

对Python中装饰器(Decorator)的理解与进阶

python中装饰器你真的理解吗?