装饰器

一.准备知识

1.函数作用域 :  由内到外优先级减小   【L(嵌套函数定义的变量)_E(函数内定义的变量)_G(全局变量)_B(系统默认定义变量)】

2.高阶函数 :(1) 函数名可以作为参数输入

                      (2) 函数名可以作为返回值

3.闭包: 在一个内部函数里,对外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包。

二.概念

装饰器是个函数,它是为其他函数增加功能用的。

import time

# 装饰器函数 //给f1,f2函数加上显示函数运行时间的功能
def logger(kal=""):#添加装饰器参数
def show_time(f):
def inter(*x,**y):
start=time.time()
f(*x,**y)
end=time.time()
print("spand %s"%(end-start))
if kal=="ture":
print("打印日志")
return inter
return show_time

@logger("ture")
# @show_time#f1=show_time(f1)
def f1():
print("f1 time")
time.sleep(2)

@logger()
# @show_time
def f2():
print("f2 time")
time.sleep(3)

@logger("ture")
# @show_time
def f3(*a,**b):#加任意参数都可以
s=0
for i in a:
s+=i
print(s)
time.sleep(1)

f3(1,2,3,5,7)
f1()
f2()
go go go! ! !
原文地址:https://www.cnblogs.com/zbooo/p/8686567.html