0

関数を持つプログラムがありupdate_database()ますが、キーワード引数が実行時までわからないため、関数が呼び出されると、次のようにする必要がある場合があります。

table_name = 'example1'
update_database(table_name, column1='...', column3='...')

しかし、別の場合は次のようになります。

table_name = 'example2'
update_database(table_name, column5='...', column2='...')

したがって、関数呼び出しは、通常の引数とキーワード引数を組み合わせる必要があります。リストとしてアクセスできるキーワード引数名​​は、古い方法で簡単にフォーマットできますが、この動作がPythonで可能かどうかはわかりません。

これが可能かどうか/どのように可能かを誰かが知っていますか?

アップデート:

update_database()関数はインポートされたモジュールの一部であるため、その定義を変更できないことにも注意してください。何らかの方法でラップすることはできますが、これで何かが得られるかどうかはわかりません。

4

1 に答える 1

3

次のように、元の関数で未定義の数のキーワード引数をいつでも使用できます。

(キーワード引数の場合、リストの代わりに単純な辞書があります)

def update_database(tname, **columns):
    for key, value in columns.items():
        # do something with key-value pairs

アップデート:

これがコメント セクションで話していることだと思いますが、正しいでしょうか?

# Create dictionaries with keys as keywords and values as argument values
kwargs0 = {'arg0': 0, 'arg1': 2, 'arg2': 5}
kwargs1 = {'arg99': 1, 'arg13': None, 'arg0': 7}

# Call the function and UNPACK the dictionaries
update_database('db_name', **kwargs0)
update_database('db_name', **kwargs1)
于 2013-09-13T12:04:21.100 に答える