• 浅谈几种简单的装饰器及其原理


    不带参数的单层装饰器

    程序一开始执行的时候便会自动的对test装饰相当于执行了test = outer(test)这条语句,所以>-----1-----<会在程序加载的时候就先打印当调用再test()的时候,test的引用已经指向了inner这个函数所以调用test()实际上是执行了inner,inner中执行完print('>-----2-----<')后,再去调用真正的test

    下面的程序输出结果是:

    >-----1-----<
    >-----2-----<
    hello world

    def outer(fun):
        print(">-----1-----<")
        def inner(*args, **kwargs):
            print('>-----2-----<')
            return fun(*args, **kwargs)
        return inner
    
    
    @outer
    def test():
        my_str = 'hello world'
        return my_str
    
    
    def main():
        print(test())
    
    
    if __name__ == '__main__':
        main()
    带参数的装饰器



  • 相关阅读:
    台州 OJ 3847 Mowing the Lawn 线性DP 单调队列
    洛谷 OJ P1417 烹调方案 01背包
    快速幂取模
    台州 OJ 2649 More is better 并查集
    UVa 1640
    UVa 11971
    UVa 10900
    UVa 11346
    UVa 10288
    UVa 1639
  • 原文地址:https://www.cnblogs.com/fanlei5458/p/9235493.html
Copyright © 2020-2023  润新知