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


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

소스코드

def my_function():
    pass

print get_function_name_as_string(my_function) #출력 : my_function

조회수 178


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
  • 2016년 01월 21일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close