パイソン |関数名を取得するにはどうすればよいですか?
最も顕著なコーディング スタイルの 1 つは、OOP パラダイムに従うことです。このため、現在では、モジュール化されたコードを記述し、デバッグを増やし、より堅牢で再利用可能なコードを作成することが重要視されています。これらすべてが、さまざまなタスクにさまざまな関数を使用することを奨励したため、関数の特定のハックを知る必要があります。この記事では、関数の名前を出力する方法について説明します。これを行うための特定の方法について説明しましょう。
方法 1: function.__name__ を使用して Python で関数名を取得する
この機能はPython3でPython3で導入されました。
Python3
# 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__ 属性を使用することもできます。
Python3
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() を定義します。この関数は、inspect.currentframe() 関数を使用して現在の関数のフレーム オブジェクトを取得し、フレーム オブジェクトの f_code 属性の co_name 属性 (関数の名前) を返します。
Inspection.currentframe() 関数は、呼び出し元のフレームのフレーム オブジェクトを返します。フレーム オブジェクトは FrameInfo クラスのインスタンスであり、関数のコード オブジェクトである f_code 属性や関数の名前である co_name 属性など、フレームに関する情報を提供するいくつかの属性があります。
最後に、コードは get_function_name() 関数を使用して関数の名前を出力します。
Python3
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) です。