반응형
질문
파이썬에서는 traceback
모듈을 사용하지 않고도 함수 내에서 함수의 이름을 알아낼 수 있는 방법이 있을까요?
예를 들어, foo
라는 모듈에 bar
라는 함수가 있다고 가정해봅시다. foo.bar()
를 실행할 때, bar
함수가 bar
의 이름을 알 수 있는 방법이 있을까요? 혹은 더 좋은 방법으로는, foo.bar
의 이름을 알 수 있는 방법이 있을까요?
#foo.py
def bar():
print "내 이름은", __myname__ # <== 이것을 실행 시간에 어떻게 계산할 수 있을까요?
답변
import inspect
def foo():
print(inspect.stack()[0][3])
print(inspect.stack()[1][3]) # foo를 호출한 함수의 이름을 반환합니다.
foo()
출력:
foo <module_caller_of_foo>
반응형
댓글