zoukankan      html  css  js  c++  java
  • 老男孩Python全栈开发(92天全)视频教程 自学笔记16

     day16课程内容:

       装饰器:

    def outer():
    x=10
    def inner():
    print(x)
    return inner
    outer()() #inner 是局部变量,10
    闭包:如果在一个内部函数里,对外部作用域(但不是对全局作用域)的变量进行引用,那么内部函数就认为就被认为是闭包。
    对修改封闭,对扩展开放,开放封闭原则!
    import time
    def foo():
    print('foo')
    time.sleep(1)
    def bar():
    print('bar')
    time.sleep(1)
    def show_time(f):
    start_time=time.time()
    f()
    end_time=time.time()
    print(end_time-start_time)
    show_time(foo) #实现了给任意函数增加计时的功能,但是同时也改变了函数的调用方式
    #########
    import time
    def show_time(f): #简单的装饰器
    def inner():
    start=time.time()
    f()
    end=time.time()
    print(end-start)
    return inner

    @show_time # 等价于:foo=show_time(foo)
    def foo():
    print('拆东墙,当年的明月换拨人看。')
    time.sleep(1)
    foo()
    #拆东墙,当年的明月换拨人看。
    #1.0000572204589844 装饰器
    @show_time
    def bar():
    print('兴也苦亡也苦')
    time.sleep(2)
    bar()

    ######给功能函数加参数,的装饰器###
    import time
    def show_time(f):
    def inner(*x,**y):
    start=time.time()
    f(*x,**y)
    end=time.time()
    print(end-start)
    return inner

    @show_time
    def foo(*a,**b):
    sum=0
    for i in a:
    sum+=i
    print(sum)
    time.sleep(1)

    foo(1,2,3,3,3,6)
    # 18
    # 1.0000569820404053

    ##给装饰器加参数的装饰器#####
    import time
    def logger(j=0):
    def show_time(f):
    def inner(*a,**b):
    start=time.time()
    f(*a,**b)
    end=time.time()
    print(end-start)
    if j==1:
    print('打印日志')
    return inner
    return show_time
    @logger(1)
    def foo(*x,**y):
    sum=0
    for i in x:
    sum+=i
    print(sum)
    time.sleep(1)
    foo(3,1,2,3)
    # 9
    # 1.0000572204589844
    # 打印日志
  • 相关阅读:
    Win7 中出现图标显示不全或消失的解决方法
    动态控制ToolStrip上ToolStripButton的图标大小
    TS——类型断言
    TS——函数的类型
    TS之对象类型——接口
    TS——联合类型
    Git文件合并
    1-1、作用域深入和面向对象
    webStrom2017.1版本如何添加vue.js插件
    二:搭建一个webpack3.5.5项目:建立项目的webpack配置文件
  • 原文地址:https://www.cnblogs.com/xuepangzi/p/7912607.html
Copyright © 2011-2022 走看看