6

get_dataいくつかのキーワード引数を取る関数があるとします。これを行う方法はありますか

def get_data(arg1, **kwargs):
    print arg1, arg2, arg3, arg4

arg1 = 1
data['arg2'] = 2 
data['arg3'] = 3 
data['arg4'] = 4 

get_data(arg1, **data)

したがって、関数呼び出しと関数定義の両方で引数名を入力しないようにするという考え方です。辞書を引数として関数を呼び出すと、辞書のキーが関数のローカル変数になり、それらの値が辞書の値になります

上記を試したところ、エラーが発生しましたglobal name 'arg2' is not definedlocals()の定義を変更して、目的の動作を得ることができることを理解しget_dataています。

したがって、私のコードは次のようになります

def get_data(arg1, kwargs):
    locals().update(kwargs)
    print arg1, arg2, arg3, arg4

arg1 = 1
data['arg2'] = 2 
data['arg3'] = 3 
data['arg4'] = 4 

get_data(arg1, data)

そしてそれもうまくいきません。また、使用せずに動作を達成することはできlocals()ませんか?

4

2 に答える 2

11

**kwargs普通の辞書です。これを試して:

def get_data(arg1, **kwargs):
    print arg1, kwargs['arg2'], kwargs['arg3'], kwargs['arg4']

また、キーワード引数に関するドキュメントを確認してください。

于 2013-05-16T12:06:41.703 に答える