zoukankan      html  css  js  c++  java
  • python-函数-装饰器

    开放封闭原则:

    可以为函数增加功能,但不能更改原函数;

    import time

    1)无参

    import time
    
    
    def show_time(f):
        def inner():
            s = time.time()
            f()
            e = time.time()
            print(e-s)
        return inner
    
    @show_time  #foo = show_time(foo)
    def foo():
        print("foo")
        time.sleep(2)
    
    #foo = show_time(foo)
    foo()

    2)为功能函数增加参数

    def show_time(f):
        def inner(*x,**y):
            s = time.time()
            f(*x,**y)
            e = time.time()
            print(e-s)
        return inner
    
    @show_time #foo = show_time(foo)
    def foo(*args,**kwargs):
        sums = 0
        for i in args:
            sums+= i
        print("sums",sums)
        time.sleep(2)
    
    #foo = show_time(foo)
    foo(1,2,3)

    3)为装饰器增加参数

    def logger(flag = ''):
        def show_time(f):
            def inner(*x,**y):
                s = time.time()
                f(*x,**y)
                e = time.time()
                print(e-s)
                if flag == 'true':
                    print('logger')
            return inner
        return show_time
    
    @logger('true') #相当于@showtime,由于闭包的原因有了flag参数
    def foo(*args,**kwargs):
        sums = 0
        for i in args:
            sums+= i
        print("sums",sums)
        time.sleep(2)
    
    #foo = show_time(foo)
    foo(1,2,3)
  • 相关阅读:
    阅读笔记09
    阅读笔记08
    阅读笔记07
    阅读笔记06
    阅读笔记05
    有关eclipse连接SQL Server 2008的问题
    每周进度条05
    软件需求模式阅读笔记04
    每周进度条04
    软件需求模式阅读笔记03
  • 原文地址:https://www.cnblogs.com/zzm-blog/p/10101989.html
Copyright © 2011-2022 走看看