変数名の引数の取得
関数に引数として変数を渡すとき、元の名前にアクセスすることが望ましい場合があります。ただし、デフォルトでは、Python はこれに対する単純なメカニズムを提供しません。
検査モジュールのハッキング
変数名を取得するには、Python の検査モジュールを利用できます。このアプローチは予期しない動作を引き起こす可能性があるため、注意することが重要です。
次の関数について考えてみましょう:
<code class="python">import inspect def foo(a, f, b): frame = inspect.currentframe() frame = inspect.getouterframes(frame)[1] string = inspect.getframeinfo(frame[0]).code_context[0].strip() args = string[string.find('(') + 1:-1].split(',') names = [] for i in args: if i.find('=') != -1: names.append(i.split('=')[1].strip()) else: names.append(i) print(names) def main(): e = 1 c = 2 foo(e, 1000, b=c) main()</code>
このメソッドは、現在のフレームを検査し、外側のフレームから関数呼び出し文字列を取得します。 。次に、デフォルトのパラメータを含む引数のリストを抽出します。この文字列を解析すると、出力に見られるように、元の変数名を取得できます。
['e', '1000', 'c']
制限事項と推奨事項
これを使用する場合は、必ず注意してください。このアプローチは実際には推奨されません。信頼性の低い結果が得られ、不必要な複雑さが生じる可能性があります。代わりに、変数名を明示的に渡すか、より適切な設計パターンを使用して目的の機能を実現することを検討してください。
以上がPython 関数に引数を渡すときに変数名を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。