• Date5


    装饰器
    定义:
    本质是函数,(装饰其他函数)就时为其他函数添加附加功能
    原则:
    1、不能修改被装饰的函数的源代码
    2、不能修改被装饰的函数的调用方式
    实现装饰器的知识储备:
    1、函数即“变量”
    2、高阶函数
    a:把一个函数名当做实参传给另一个函数(在不修改被装饰函数源代码的情况下为其添加功能)
    b:返回值中包含函数名(不修改函数调用方式)
    3、嵌套函数
    高阶函数+嵌套函数 ==装饰器
    def logger():
    print('logging')
    def test1():
    logger()
    pass
    def test2():
    logger()
    pass
    test1()
    test2()
    import time
    def timmer(func):
        def warpper(*args,**kwargs):
            start_time = time.time()
            func()
            stop_time = time.time()
            print("the func time is %s"%(stop_time-start_time))
        return warpper
    
    @timmer
    
    def test1():
        time.sleep(3)
        print("in the test1")
    
    test1()
    View Code
    #Author:Brill 
    #EXP1
    def foo():
        print('in the foo')
        bar()
    def bar():
        print("in the bar")
    foo()
    #EXP2
    import time
    def bar():
        time.sleep(3)
        print("in the bar ")
    def test1(func):
        start_time = time.time()
        func()  #run time
        stop_time = time.time()
        print("the func run time is %s"%(stop_time-start_time))
    test1(bar)
    #Exp3
    import time
    def bar():
        time.sleep(3)
        print("in the bar ")
    def test2(func):
        print(func)
        return func
    #print(test2(bar))
    bar = test2(bar)
    bar()  #run bar
    View Code
    #Author:Brill 
    import time
    def timer(func):  #timer(test1)  func = test1
        def deco():
            start_time = time.time()
            func() #run test1
            stop_time = time.time()
            print("the func run time is  %s" % (stop_time - start_time))
        return deco
    
    @timer # test1 = timer(test1)
    def test1():
        time.sleep(3)
        print("in the test1")
    
    @timer
    def test2():
        time.sleep(3)
        print("in the test2")
    
    
    test1()    #--->deco
    test1()
    View Code
    #Author:Brill 
    import time
    def timer(func):  #timer(test1)  func = test1
        def deco(*args,**kwarge):
            start_time = time.time()
            func(*args,**kwarge) #run test1
            stop_time = time.time()
            print("the func run time is  %s" % (stop_time - start_time))
        return deco
    
    @timer    # test1 = timer(test1)
    def test1():
        time.sleep(1)
        print("in the test1")
    
    @timer # test2 = timer(test2) = deco test2=test(name)
    def test2(name,age):
        time.sleep(3)
        print("test2:",name,age)
    
    test1( ) #--->deco
    test2("alex",22)
    View Code

     斐波那契数列:

    #Author:Brill 
    def fib(max):
        n,a,b,=0,0,1
        while n<max:
            print(b)
            a,b = b ,a+b
            n= n+1
        return 'Done'
    fib(100)
    View Code
     
    你只管努力,其他的交给天意~
  • 相关阅读:
    表值函数,标量值函数
    考勤率
    精确小数点
    SQL 返回刚插入的值
    xml读取
    备份表
    case,cast
    DDR基础知识
    NXP官方的I.MX6UL板级Uboot源码适配
    高通msm8909打开debug串口
  • 原文地址:https://www.cnblogs.com/genghenggao/p/9039909.html
Copyright © 2020-2023  润新知