함수의 이름을 스트링으로 저장하려면?

조회수 2389회

파이썬 스크립트에서 함수의 이름을 스트링으로 저장하는 방법이 있을까요? 밑의 소스코드에서 get_function_name_as_string()을 구현하려면 어떻게 해야 하나요?

소스코드

def my_function():
    pass

print get_function_name_as_string(my_function) #출력 : my_function

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    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
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)