[python] Decorator


Decorator
  • 関数を受け入れ、コマンドを追加して関数の関数として返します.
  • 関数の内部を変更しない場合は、機能を変更したい場合に使用します.
  • は、一般に、関数の前処理または後処理が必要な場合に使用される.
  • はまた、レコーダを使用して、方法または関数の重複および拡張の責任を低減する
  • も使用する.
    簡単な関数を定義するコードを次に示します.
    def func1():
        print("Hello world!")
        print()
        
    def func2():
        print("Hello everyone!")
        print()
        
        
    def func3():
        print("Here is Korea!")
        print()
        
        
    func1()
    func2()
    func3()
    しゅつりょく
    Hello world!
    Hello everyone!
    Here is Korea!
    各関数で前、後の日付、時刻を出力する場合は、次の操作を行います.
    import datetime
    
    def func1():
    	print(datetime.datetime.now())
        print("Hello world!")
        print(datetime.datetime.now())
        print()
        
    def func2():
        print(datetime.datetime.now())
        print("Hello everyone!")
        print(datetime.datetime.now())
        print()
        
        
    def func3():
        print(datetime.datetime.now())
        print("Here is Korea!")
        print(datetime.datetime.now())
        print()
    このように簡単に繰り返すことができます.
    しかし、関数が多くなったら?直接加えるのは面倒なことだ
    役に立つのはDecoratorです.
    次の例では、decoratorを使用して上記の簡単なタスクを処理します.
    import datetime
    
    def datetime_decorator(func):
        def decorated():
            print("Start!")
            func()
            print(datetime.datetime.now())
            print()
        return decorated
    
    @datetime_decorator
    def func1():
        print("Hello world!")
    
    @datetime_decorator
    def func2():
        print("Hello everyone!")
        
    @datetime_decorator
    def func3():
        print("Here is Korea!")
        
        
    func1()
    func2()
    func3()
    
    
    しゅつりょく
    Start!
    Hello world!
    2021-07-21 10:55:40.304144
    Start!
    Hello everyone!
    2021-07-21 10:55:40.304282
    Start!
    Here is Korea!
    2021-07-21 10:55:40.304495
    reference
  • https://bluese05.tistory.com/30