次のシナリオを考えてみましょう。引数として変数の名前を必要とする関数があるとします。その名前に基づいていくつかの操作を実行します。関数内の元の変数名を取得する方法はありますか?
この質問に答えるために、呼び出しコンテキストを取得し、コード コンテキストから変数名を抽出できる検査モジュールを利用するメソッドを調べてみましょう。 .
<code class="python">import inspect def foo(a, f, b): # Get the stack frame of the calling function frame = inspect.currentframe() # Move up one level to get the frame of the calling context frame = inspect.getouterframes(frame)[1] # Get the source code context of the calling context string = inspect.getframeinfo(frame[0]).code_context[0].strip() # Extract the argument names from the code context args = string[string.find('(') + 1:-1].split(',') names = [] for i in args: if i.find('=') != -1: # Handle keyword arguments names.append(i.split('=')[1].strip()) else: # Handle positional arguments names.append(i) print(names) def main(): e = 1 c = 2 foo(e, 1000, b = c) main()</code>
説明:
出力例:
['e', '1000', 'c']
注: このアプローチには、コール スタックの検査と、ソース コード コンテキストは脆弱でエラーが発生しやすいものです。実用的な使用は推奨されておらず、学術目的または娯楽目的のみとして考慮してください。
以上がPythonで関数の引数から元の変数名を抽出できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。