一.准备知识
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()