Python에서 현재 함수의 이름 찾기
문제 상황: 함수 내에서 함수 이름 알아내기
Python 프로그래밍을 하다 보면, 현재 실행 중인 함수의 이름을 알고 싶을 때가 있습니다. 이런 경우에 어떻게 해야 할까요? Stack Overflow에서는 이에 대한 여러 해결 방법이 제안되어 있습니다. 이 글에서는 그 중 가장 효율적인 방법을 알아보겠습니다.
해결책 1: inspect
모듈 사용하기
Python의 내장 라이브러리인 inspect
모듈을 사용하면 현재 함수의 이름을 쉽게 알아낼 수 있습니다.
1
2
3
4
import inspect
def my_function():
print(inspect.currentframe().f_code.co_name)
이 코드를 실행하면 my_function
이 출력됩니다. inspect.currentframe()
은 현재 함수의 프레임을 반환하고, .f_code.co_name
으로 함수의 이름을 알아낼 수 있습니다.
해결책 2: __name__
속성 이용
다른 방법으로는 __name__
이라는 내장 속성을 사용하는 것입니다.
1
2
def another_function():
print(another_function.__name__)
이 방법은 간단하지만, 함수를 직접 명시해야 하므로 다른 함수로 코드를 복사하거나 할 때는 수정이 필요합니다.
주의사항: 재귀함수와 inspect
재귀함수를 사용할 경우 inspect
모듈은 현재 호출한 함수 프레임만을 알려주기 때문에, 재귀 호출에서는 원하는 결과를 얻을 수 없습니다.
정리: 어떤 방법을 사용할까?
inspect
모듈은 더 일반적인 상황에서 유용하며, __name__
은 특정 함수에 한정된 경우에만 사용하는 것이 좋습니다. 여러 상황에서 활용 가능하다고 판단되면 inspect
모듈을 사용하는 것이 바람직합니다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.