@装饰器名称
作用: 给被装饰的对象增加额外的属性或者功能
原理:
1. 装饰器本质上是一个函数(可调用对象)
2. 这个函数的参数是一个函数对象(被装饰的函数)
3. 这个函数的返回值是一个函数对象(基于被装饰的函数添加了额外属性或者功能的函数)
原始语法:
@decorator
def function():
pass
原始语法: function = decorator(function)
装饰器的基本用法
# 定义一个装饰器super_name,将普通人变成超人
def super_man(func):
# 增加了额外功能的函数
def wrapper():
# 支持原有函数的功能
func()
# 增加额外的功能
print("会飞")
return wrapper
@super_man # man = super_man(man)
def man():
print("会爬")
print("会走")
print("会跑")
man()
案例: 统计函数的执行时间
import time
def gone_time(func):
def start_record():
start_time = time.time()
func()
end_time = time.time()
result = end_time - start_time
print(result)
return start_record
@gone_time
def test_func():
time.sleep(2)
test_func()