3

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

これについてどこかで見た覚えがありますが、どこでどのように行うのか思い出せません。

ここに簡単な例があります

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)

私は物事を想像していますか、それとも本当にできるのでしょうか?

4

2 に答える 2

6

locals()変数名を値にマッピングする辞書を返す(またはglobals()必要に応じて) を使用できます。

bar(**locals())
于 2011-08-09T20:29:19.500 に答える
3

fooがこのように書かれている場合

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

それ以外は、あなたが投稿した他の2つの例の方が優れていますが、すべてのローカルを拡張することは悪い考えです。

于 2011-08-09T20:32:58.633 に答える