def say_hello_to_lh_team():
print('안녕하세요. 좋은 아침입니다.')
print('고생하셨습니다. 내일 뵐게요.')
say_hello_to_lh_team()
---
안녕하세요. 좋은 아침입니다.
고생하셨습니다. 내일 뵐게요.
def work_in_gfc():
print('10시에 스크럼 진행하시죠.')
print('잠시 미팅 가능하실까요?')
print('ESG 관련해서 질문이 있습니다 !')
work_in_gfc()
---
10시에 스크럼 진행하시죠.
잠시 미팅 가능하실까요?
ESG 관련해서 질문이 있습니다 !
def say_hello_to_lh_team(work_func):
print('안녕하세요. 좋은 아침입니다.')
work_func()
print('고생하셨습니다. 내일 뵐게요.')
def work_in_gfc():
print('10시에 스크럼 진행하시죠.')
print('잠시 미팅 가능하실까요?')
print('ESG 관련해서 질문이 있습니다 !')
say_hello_to_lh_team(work_in_gfc)
---
안녕하세요. 좋은 아침입니다.
10시에 스크럼 진행하시죠.
잠시 미팅 가능하실까요?
ESG 관련해서 질문이 있습니다 !
고생하셨습니다. 내일 뵐게요.
def say_hello_to_lh_team(work_func):
def print_hello():
print('안녕하세요. 좋은 아침입니다.')
result = work_func()
print('고생하셨습니다. 내일 뵐게요.')
return print_hello
@say_hello_to_lh_team
def work_in_gfc_monday():
print('안녕하세요. 좋은 아침입니다.')
...
print('고생하셨습니다. 내일 뵐게요.')
...
@say_hello_to_lh_team
def work_in_gfc_tuesday():
...
@say_hello_to_lh_team
def work_in_gfc_wednesday():
...
work_in_gfc_monday()
work_in_gfc_tuesday()
work_in_gfc_wednesday()
def my_decorator(func):
def func_in_deco(): #데코레이터 내부 함수
return func()
return func_in_deco
@my_decorator
def original_func(): #원본 함수
"""함수 원본입니당.""" #함수 설명
print("Hello!")
print(original_func.__name__)
print(original_func.__doc__)
---
func_in_deco
None
import functools
def my_decorator(func):
@functools.wraps(func) # 추가한 구문
def func_in_deco():
return func()
return func_in_deco
@my_decorator
def original_func():
"""함수 원본입니당."""
pass
print(original_func.__name__)
print(original_func.__doc__)
---
original_func
함수 원본입니당.
def auth_decorator(func): # 권한을 검증하는 공통 함수
def wrapper(user):
if user.is_authenticated:
return func(user) # delete_user 함수 실행
else:
raise PermissionError("권한이 없습니다.")
return wrapper
@auth_decorator
def delete_user(user, ...): # 프로덕트 내부 함수
pass
def log_decorator(func): # 실행 시간 및 실행 함수를 로깅하는 decorator
def wrapper(*args, **kwargs): # 여러곳에서 사용되기 때문에, 유연한 형태로 인자를 수령
start_time = time.time()
end_time = time.time()
logging.info(f'{func.__name__} / 실행 시각 : {start_time} 실행 시간: {end_time - start_time} 초')
# logging 코드 추가
# 추가로 필요로하는 값을 유연하게 추가.
return func()
return wrapper
@log_decorator
def my_func():
pass
print(isinstance(1, object))
print(isinstance('str', object))
print(isinstance(original_func, object))
---
True
True
True