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)
  • 相关阅读:
    php $_SERVER 中的 QUERY_STRING和REQUEST_URI
    php 弱类型比较
    php函数漏洞
    web源码泄露
    sqlmap 基本使用步骤(一)
    php 调用远程url
    $_POST 和 php://input 的区别
    poj 3461 Oulipo (KMP入门)
    hdu 5417 Victor and Machine
    HDU 1885 Key Task (bfs)
  • 原文地址:https://www.cnblogs.com/zzm-blog/p/10101989.html
Copyright © 2011-2022 走看看