# 装饰器的结构
def decorator():
def inner():
pass
return inner
Python函数装饰器
代码1:
import time
def cal_time(fn): # 计算代码运行时间
# def start():
start_time = time.time() # 记录代码开始执行时间戳
return_value1 = fn() # 执行目标函数
end_time = time.time() # 记录代码结束时间戳
print('运行时间是', round(end_time - start_time, 4), '秒') # 输出代码执行时间
return return_value1
@cal_time # 函数装饰器
def test11():
time.sleep(1)
print('sludge')
return 100
test11 += 1#test11直接变成变量了么?
print(test11)
代码2:
import time
def cal_time(fn): # 计算代码运行时间
def start():
start_time = time.time() # 记录代码开始执行时间戳
return_value1 = fn() # 执行目标函数
end_time = time.time() # 记录代码结束时间戳
print('运行时间是', round(end_time - start_time, 4), '秒') # 输出代码执行时间
return return_value1
return start
@cal_time # 函数装饰器
def test11():
time.sleep(1)
print('sludge')
return 100
x = test11()
print(x)
经过函数装饰器以后,是否函数名直接变成一个变量名??
import time
def cal_time(fn): # 计算代码运行时间
# def start():
start_time = time.time() # 记录代码开始执行时间戳
return_value1 = fn() # 执行目标函数
end_time = time.time() # 记录代码结束时间戳
print('运行时间是', round(end_time - start_time, 4), '秒') # 输出代码执行时间
return return_value1
# return start
#
@cal_time # 函数装饰器
def test11():
time.sleep(3)
print('sludge')
return 100
# x = test11()
# print(x)
# 执行过函数转世器,接下来运行的函数会变成一个变量的么?
为什么这里没有执行 test11中的 print(‘sludge’)呢?