1. ホーム
  2. python

[解決済み] 関数に渡された引数のリスト/タプル/ディクショ ンを取得するには?

2023-02-03 22:16:30

質問

次のような関数がある。

def foo(a, b, c):
    pass

渡された引数のリスト/タプル/ディクテ/その他をどのように取得するのでしょうか。 自分で構造を構築することなく ?

具体的には、私はPython版のJavaScriptの arguments キーワードやPHPの func_get_args() メソッドを使用します。

私が ではない を使った解決策を探しています。 *args または **kwargs 私は関数定義で引数の名前を指定する必要がありますが、関数内ではリストまたはディクスタイルの構造でそれらを扱いたいと思います。

どのように解決するのですか?

この場合 locals() を使うと、このように関数内のローカル変数のディクショ ンを取得することができます。

def foo(a, b, c):
    print locals()

>>> foo(1, 2, 3)
{'a': 1, 'c': 3, 'b': 2}

しかし,これは少しハチャメチャです. locals() は関数に渡された引数だけでなく、ローカルスコープのすべての変数を返すので、関数の一番上でこれを呼ばないと、結果は必要以上の情報を含んでしまうかもしれません。

def foo(a, b, c):
    x = 4
    y = 5
    print locals()

>>> foo(1, 2, 3)
{'y': 5, 'x': 4, 'c': 3, 'b': 2, 'a': 1}

私はむしろ、他の回答で提案されたように、関数の先頭で必要な変数のdictまたはリストを構築することをお勧めします。 その方がより明確で、より明確な方法でコードの意図を伝えることができると思います。