zoukankan      html  css  js  c++  java
  • python装饰器补漏

    以前写过一篇装饰器文章,觉得少了点东西,今天特来补上,也就是带参数的装饰器,上篇文章写的不严谨

    def logger(logs=""):
        def outer(f):
            def inner(*args):
                print("#####")
                ret = f(*args)
                return ret
            return inner
        if logs == "true":
            print("recoder logs")
        return outer
    
    @logger("true")###等价于@outer,先把true传进去,由于闭包的特性,outer和inner函数都可以拿到logs这个形参的参数 
    def adds(*args):
        sums = 0
        for x in args:
            sums = sums + x
        return sums
    
    #x = outer(adds)
    print(adds(4, 5, 6))

    执行结果如下

    recoder logs
    #####
    15

    根据返回值来看,函数执行是由外到内返回值???

  • 相关阅读:
    ZOJ 4097 Rescue the Princess
    最大值最小化 最小值最大化
    SD第九届省赛B题 Bullet
    Euler Circuit UVA
    bzoj 1878
    随笔
    BZOJ
    主席树模板
    AC自动机模板
    BZOJ
  • 原文地址:https://www.cnblogs.com/hh2737/p/9476079.html
Copyright © 2011-2022 走看看