logo

파이썬 | 함수 이름을 얻는 방법은 무엇입니까?

가장 눈에 띄는 코딩 스타일 중 하나는 OOP 패러다임을 따르는 것입니다. 이를 위해 요즘에는 모듈식으로 코드를 작성하고, 디버깅을 늘리고, 더욱 강력하고 재사용 가능한 코드를 만드는 것이 강조되었습니다. 이 모든 것은 서로 다른 작업에 대해 서로 다른 기능을 사용하도록 장려했으며 따라서 우리는 특정 기능 해킹을 알게 될 것입니다. 이 문서에서는 함수 이름을 인쇄하는 방법에 대해 설명합니다. 이를 수행할 수 있는 특정 방법에 대해 논의해 보겠습니다.

방법 1: function.__name__을 사용하여 Python에서 함수 이름 가져오기

이 함수는 Python3의 Python3에서 도입되었습니다.



파이썬3


자식 체크아웃





# initializing function> def> GFG():> >return> 'You just called for success !!'> # printing function name> # using function.__name__> print>(>'The name of function is : '> +> GFG.__name__)>



>

>

출력 :

The name of function is : GFG>

방법 2: function.func_name을 사용하여 Python에서 함수 이름 가져오기

간단한 함수 속성 함수인 func_name을 사용하면 함수의 이름을 얻을 수 있으므로 테스트 목적과 문서화에 매우 유용할 수 있습니다. 단점은 이것이 Python2에서만 작동한다는 것입니다.

파이썬




# initializing function> def> GFG():> >return> 'You just called for success !!'> # printing function name> # using function.func_name> print>(>'The name of function is : '> +> GFG.func_name)>

>

>

출력 :

The name of function is : GFG>

방법 3: __qualname__ 속성을 사용하여 Python에서 함수 이름 가져오기

__qualname__은 __name__보다 더 완전한 정보를 제공하므로 디버깅에 더 도움이 될 수 있습니다. 객체나 클래스에서 이름을 추출하려면 해당 __qualname__ 속성을 사용할 수도 있습니다.

파이썬3




파이썬 프로그램 예제
def> Geekforgeeks():> >pass> class> Geekforgeeks(>object>):> >def> my_method(>self>):> >pass> # 'my_function'> print>(Geekforgeeks.__qualname__)> # 'My_Class.my_method'> print>(Geekforgeeks.my_method.__qualname__)>

>

>

출력 :

Geekforgeeks Geekforgeeks.my_method>

방법 4: 검사 모듈을 사용하여 Python에서 함수 이름 가져오기

이 코드는 검사 모듈을 가져오고 함수 이름을 반환하는 get_function_name() 함수를 정의합니다. 이 함수는 Inspection.currentframe() 함수를 사용하여 현재 함수의 프레임 객체를 가져온 다음, 함수 이름인 프레임 객체의 f_code 속성 중 co_name 속성을 반환합니다.

Inspection.currentframe() 함수는 호출자의 프레임에 대한 프레임 객체를 반환합니다. 프레임 객체는 함수의 코드 객체인 f_code 속성과 함수의 이름인 co_name 속성과 같이 프레임에 대한 정보를 제공하는 여러 속성을 갖는 FrameInfo 클래스의 인스턴스입니다.

마지막으로 코드는 get_function_name() 함수를 사용하여 함수 이름을 인쇄합니다.

파이썬3




import> inspect> # initializing function> def> get_function_name():> ># get the frame object of the function> >frame>=> inspect.currentframe()> >return> frame.f_code.co_name> # printing function name> print>(>'The name of function is : '> +>get_function_name())># test_function> #This code is contributed by Edula Vinay Kumar Reddy>

>

>

산출

The name of function is : get_function_name>

이 접근 방식은 O(1)의 시간 복잡도와 O(1)의 보조 공간을 갖습니다.