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)
  • 相关阅读:
    struts2 标签
    Ubutu命令 笔记积累
    虚拟机VirtualBox和Ubutu
    更新PostgreSQL数据
    向PostgreSQL插入数据
    PostgreSQL表依赖性跟踪
    PostgreSQL外部数据
    PostgreSQL分区介绍
    PostgreSQL继承详解
    PostgreSQL模式介绍
  • 原文地址:https://www.cnblogs.com/zzm-blog/p/10101989.html
Copyright © 2011-2022 走看看