2011-08-09 12 views
3

基本的には、関数を呼び出すときに辞書と同じように現在のスコープを拡張したいと考えています。現在のスコープをPythonでkwargsとして使用する

私はこれについて何かを見たことがありますが、どこでどのように行うのか覚えていません。ここで

def bar(a, b, c, d, e, f): 
    pass 

def foo(a, b, c, d, e, f): 
    # Instead of doing this 
    bar(a, b, c, d, e, f) 
    # or 
    bar(a=a, b=b, c=c, d=d, e=e, f=f) 
    # I'd like to do this 
    bar(**local_scope) 

私は物事を想像AMまたはこれが本当に行うことができますか?簡単な例ですか

答えて

6

locals()(または必要なものによってはglobals())を使用すると、変数名を値にマッピングする辞書を返します。

bar(**locals()) 
+0

完璧! 'foo'関数にいくつかのローカル変数を追加するので、' bar、 '引数リストに' * args、** kwargs'を追加しなければなりませんでした。 –

3

fooはあなたが投稿し、他の二つの例が優れていること以外に、この

def foo(**kwargs): 
    bar(**kwargs) 

のように書かれていた場合は、すべて地元の人々を拡大することは悪い考えです。

+0

最初の関数で** kwargsを使うことはできません。 funcargs –

関連する問題