본문 바로가기
Python/Python FAQ

Python 해당 함수 내에서 함수 이름을 결정합니다 (traceback을 사용하지 않고)., Determine function name from within that function (without using traceback)

by 베타코드 2023. 7. 20.
반응형

질문


파이썬에서는 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>
반응형

댓글