装饰器

对修改是封闭的,对扩展是开放的

在原有函数上调用时加时间

import time

def a():
    print('This is a function') 

def b():
    print('Hello world') 

def print_current_time(abc):
    print(time.time())
    abc()

print_current_time(a)
print_current_time(b)

等同于

import time

def a():
    print('This is a function') 

def b():
    print('Hello world') 

def print_current_time(abc):
    print(time.time())
    abc()

print(time.time())
a()
print(time.time())
b()

更改了内部实现,不够优雅

装饰器

修改一下

进一步优化,支持不同个数的参数

进一步优化,加入关键字参数

装饰器也可以用来控制访问 一个函数上就可以加多个装饰器

Last updated

Was this helpful?