装饰器是Python中的重要概念. 通过装饰器, 我们可以在不改变函数名称的情况下, 对函数进行一定的修改.
# _Author: lWX548594
# _Date: 2018/7/11 0011
# _SctiptName: decrator
import time
# 遵守开放封闭原则
# def showtime():
# start = time.time()
# foo()
# end = time.time()
# print("Spend time is: %s" % (end - start))
#
# showtime()
# 变量引入到函数
def logger(flag=''): # 装饰器一个非常好的地方, 就是可以引入变量, 有了这个变量可以进行一系列的操作.
def show_time(f):
def inner(x, y):
start = time.time()
f(x, y)
end = time.time()
if flag=='true':
print("日志记录: ")
print("Spend time is: %s" % (end - start))
return inner # 返回的是一个函数, 这个函数是普通函数经过修饰后的新函数
return(show_time)
# @showtime
# def foo():
# for i in range(1000):
# print(i,)
@logger('true') # @来引入装饰器, 并将一个参数true传入
def add(a, b): # 此时的add函数, 以上的inner函数, 并且flag='true'
print(a + b)
# foo = showtime(foo)
print(add(3, 7))
执行结果:
C:\Users\lwx548594\PycharmProjects\LiusProject\venv\Scripts\python.exe C:/Users/lwx548594/PycharmProjects/LiusProject/old/decrator.py
10
日志记录:
Spend time is: 0.0
None
转载请注明:liutianfeng.com » 装饰器-Python
发表回复
要发表评论,您必须先登录。