함수의 이름을 스트링으로 저장하려면?
조회수 2389회
파이썬 스크립트에서 함수의 이름을 스트링으로 저장하는 방법이 있을까요?
밑의 소스코드에서 get_function_name_as_string()
을 구현하려면 어떻게 해야 하나요?
소스코드
def my_function():
pass
print get_function_name_as_string(my_function) #출력 : my_function
1 답변
-
1. class.name 어트리뷰트 사용
class.__name__
은 클래스나 타입의 이름입니다. 모듈이나 클래스, 내장 함수에서도 쓸 수 있으므로func_name
보다 더 광범위하게 쓸 수 있습니다.import time time.time.func_name #에러 time.time.__name__ #'time'
2. sys._getframe() 사용
단, 파이썬3에서는 warning을 줄 수도 있습니다
sys._getframe([depth])는 call스택에서 stack top으로부터
depth
만큼 밑에 있는frame object
를 return 합니다.depth
가 call stack보다 큰 경우ValueError
가 발생합니다.import sys this_function_name = sys._getframe().f_code.co_name
댓글 입력