zoukankan      html  css  js  c++  java
  • 浅谈几种简单的装饰器及其原理

    不带参数的单层装饰器

    程序一开始执行的时候便会自动的对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()
    带参数的装饰器



  • 相关阅读:
    SQL学习指南第三篇
    SQL学习指南第二篇
    Rebuilding Roads
    TOJ4244: Sum
    K-th Number
    【模板】后缀数组
    冰水挑战
    旅途
    Monkey and Banana
    Max Sum Plus Plus
  • 原文地址:https://www.cnblogs.com/fanlei5458/p/9235493.html
Copyright © 2011-2022 走看看