Python中的装饰器

2020 年 06 月 04 日 • 阅读数: 143

装饰器

应用场景

  • 当我们已经编写好了一些业务逻辑之后,要去变更一些需求,这时候就存在大量的函数需要修改
  • 在编程中,有一个基本原则是:对修改是封闭的,对扩展是开放的
  • 所以,我们尽量不去修改原来的代码,而是通过扩展来更改业务需求
  • 要扩展原有的需求,我们可以新增加一个函数,将原有函数作为参数传递进去,在内部调用它
  • 但是,这种方法并没有体现原函数本身的特性,只是在外部进行了扩展,而不是对函数本身扩展
def func():
    print('This is a function')
import time
def print_current_time(func):
    print(time.time())
    func()
print_current_time(func)
1533087771.9330616
This is a function
  • 利用装饰器,在不改变函数原有调用方式的前提下,为原函数扩展功能
  • 利用语法糖@简化装饰器的调用方式
def decorator(func):
    def wrapper(*args, **kwargs):
        print(time.time())
        func(*args, **kwargs)
    return wrapper
def func():
    print('This is a function')
func = decorator(func)
@decorator
def func():
    print('This is a function')
func()
1533089980.1580434
This is a function
标签: Python装饰器
添加评论
评论列表
没有更多内容