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

파이썬 스크립트에서 함수의 이름을 스트링으로 저장하는 방법이 있을까요? 밑의 소스코드에서 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
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.