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
    # 打印日志
  • 相关阅读:
    poj1661【DP,左右两端dp】
    hdoj1074【A的无比爆炸】
    hdoj1024【DP.最 大 m 字 段 和】(写完我都怕。。。不忍直视。。)
    qq教xixi写模拟加法【非常爆炸】
    错排公式
    POJ3616【基础DP】
    hdoj1257【疑问】(贪心)
    【弱的C艹之路。。未完待续】
    hdoj1728【搜索的两种写法】
    hdoj1001【智障了。。。】
  • 原文地址:https://www.cnblogs.com/xuepangzi/p/7912607.html
Copyright © 2011-2022 走看看