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