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