python 学习第七天(闭包,装饰器)

  • 闭包
    闭包就是能够读取其他函数内部变量的函数。比如在一个函数内部的子函数:
def p(neme,age):
    def print_name():
        #print_name这个函数就是闭包,因为他读取了p函数的name局部变量
        print(neme)
  • 装饰器
    本质是一个函数
    功能:为被修饰函数添加功能
    要求:1.不修改被修饰函数的源代码。2.不修改被修饰函数的调用方式。
    为什么要使用装饰器:使用装饰器为函数添加功能不违背开放封闭原则。
#原函数
def f1():
    time.sleep(2)
    print('f1运行')
    return 'f1的返回值'

print(f1())
#输出
f1运行
f1的返回值


#加了装饰器后
def timer(func):   #timer就是个装饰器,计算函数的运行时间 
    def x(*args,**kwargs):   #x是个闭包
        start=time.time()
        ret=func(*args,**kwargs)
        stop=time.time()
        print(func.__name__+'运行时间为%f'%(stop-start))
        return ret
    return x

@timer
# 相当于f1=timer(f1)
def f1():
    time.sleep(2)
    print('f1运行')
    return 'f1的返回值'

print(f1())



#输出
f1运行
f1运行时间为2.003750
f1的返回值


猜你喜欢

转载自blog.csdn.net/CZ505632696/article/details/81150562