ホームページ  >  記事  >  バックエンド開発  >  Python 関数に引数を渡すときに変数名を取得するにはどうすればよいですか?

Python 関数に引数を渡すときに変数名を取得するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-30 21:11:03273ブラウズ

How can I retrieve variable names when passing arguments to a Python function?

変数名の引数の取得

関数に引数として変数を渡すとき、元の名前にアクセスすることが望ましい場合があります。ただし、デフォルトでは、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。