装饰器
def hello():
print("Hello world")
hello()
Hello world
f = hello
f()
Hello world
print(id(f))
print(id(hello))
print(f.__name__)
print(hello.__name__)
2550992906848
2550992906848
hello
hello
装饰器(Decrator)
- 在不改动函数代码的基础上无限扩展函数功能的一种机制,本质上讲,装饰器是一个返回函数的高阶函数
- 装饰器的使用:使用@语法,即在每次要扩展到函数顶以前使用@+函数名
import time
def printTime(f):
def wrapper(*args,**kwargs):
print("Time: ",time.ctime())
return f(*args,**kwargs)
return wrapper
@printTime
def hello():
print("Hello world")
hello()
Time: Wed Nov 6 15:58:03 2019
Hello world
@printTime
def hello2():
print("asdadadasdsa")
print("真累")
hello2()
Time: Wed Nov 6 16:02:19 2019
asdadadasdsa
真累
def hello3():
print("手动执行装饰器")
hello3()
hello3 = printTime(hello3)
hello3()
f = printTime(hello3)
f()
手动执行装饰器
Time: Wed Nov 6 16:45:52 2019
手动执行装饰器
Time: Wed Nov 6 16:45:52 2019
Time: Wed Nov 6 16:45:52 2019
手动执行装饰器