Decorator in Python

Decorator Simple Examples

import time κ°„λ‹¨ν•œ λ¬Έμ œμ—μ„œ decorator의 μ“°μž„μ„ μ°Ύμ•„λ³΄μž.

decorator => ν•¨μˆ˜λ₯Ό input으둜 λ°›μ•„μ„œ => μƒˆλ‘œμš΄ ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄μ„œ 리턴

ν•¨μˆ˜λ₯Ό λ°›μ•„ μƒˆλ‘œμš΄ ν•¨μˆ˜λ₯Ό λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜

import time  

def hello(name):
    print("Hello, my name is " + name)


def track_time(func):
    def new_func(*args, **kwargs):
        start_time = time.time()
        func(*args, **kwargs)
        end_time = time.time()
        print(f"Execute Time : {end_time - start_time}")
    return new_func


hello = track_time(hello)
hello("primrose")
# ##
# ν™•μž₯성을 μœ„ν•΄ track_timeμ΄λΌλŠ” λ°μ½”λ ˆμ΄ν„° ν•¨μˆ˜λ₯Ό λ§Œλ“ λ‹€. 인자둜 ν•¨μˆ˜λ₯Ό λ°›κ³ , λ‚΄λΆ€μ˜ ν•¨μˆ˜λ₯Ό 리턴해쀀닀.
# λ¦¬ν„΄λ˜λŠ” ν•¨μˆ˜λŠ” λ°μ½”λ ˆμ΄ν„° ν•¨μˆ˜ μ•ˆμ—μ„œ μ •μ˜λœ ν•¨μˆ˜μ΄κ³ , ν™•μž₯성을 μœ„ν•΄ packingν•œλ‹€.
"""
Hello, my name is primrose
Execute Time : 2.193450927734375e-05
"""

μœ„μ—μ„œ hello = track_time(hello)λΌλŠ” μ‹μœΌλ‘œ ν•¨μˆ˜λ₯Ό wrappingν–ˆλŠ”λ°,

νŒŒμ΄μ¬μ—μ„œλŠ” 이것을 λ‹€μŒκ³Ό 같이 ν‘œν˜„μ΄ κ°€λŠ₯ν•˜λ‹€

μœ„μ—μ„œλŠ” λ°μ½”λ ˆμ΄ν„°κ°€ ν•˜λ‚˜μ˜€μ§€λ§Œ, 쀑첩(nested)도 κ°€λŠ₯ν•˜λ‹€.

μ‹œκ°„μ„ μΈ‘μ •ν•˜λŠ” track_time뿐 μ•„λ‹ˆλΌ, μ‹œμž‘κ³Ό 끝을 μ•Œλ €μ£ΌλŠ” λ°μ½”λ ˆμ΄ν„° ν•¨μˆ˜λ„ λ§Œλ“€μ—ˆλ‹€.

μ•„λž˜λŠ” κ°„λ‹¨ν•œ λ°μ½”λ ˆμ΄ν„° ν™œμš© μ˜ˆμ‹œ, ν”Όλ³΄λ‚˜μΉ˜(μ—„μ—°νžˆ λ”°μ§€μžλ©΄ λ©”λͺ¨μ΄μ œμ΄μ…˜)μ—μ„œ μ‚¬μš© κ°€λŠ₯ !

Last updated