1. ホーム
  2. python

[解決済み] オプションの引数を持つPython関数を作成するにはどうしたらいいですか?

2022-03-17 10:12:17

質問

いくつかの引数を取るPythonの関数があります。これらの引数のいくつかは、いくつかのシナリオで省略される可能性があります。

def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None):
    #code

引数 d を通して h はそれぞれ異なる意味を持つ文字列です。重要なのは、どのオプション・パラメータをどのような組み合わせで渡すかを選択できることです。例えば (a, b, C, d, e) または (a, b, C, g, h) または (a, b, C, d, e, f またはそのすべて(これらは私の選択です)。

この関数をオーバーロードできれば最高なのですが、Pythonはオーバーロードをサポートしていないと読みました。必要なint型引数のいくつかをリストに挿入しようとしたら、引数のミスマッチエラーが発生しました。

今現在、私は最初のいくつかの足りない引数の代わりに空の文字列をプレースホルダーとして送っています。実際の値だけを使って関数を呼び出せるようにしたいのですが。

何か方法はないでしょうか?引数リストの代わりにリストを渡すことは可能でしょうか?

今現在、ctypeを使ったプロトタイプは以下のような感じです。

_fdll.some_function.argtypes = [c_void_p, c_char_p, c_int, c_char_p, c_char_p, c_char_p, c_char_p, c_char_p]

解決方法は?

のように呼び出してみてください。 obj.some_function( '1', 2, '3', g="foo", h="bar" ) . 必須の位置引数の後に、特定のオプション引数を名前で指定することができます。