Использование текущей области видимости как kwargs в python - PullRequest
3 голосов
/ 10 августа 2011

Я хочу расширить текущую область видимости, как словарь при вызове функции.

Я помню что-то об этом где-то, но не могу вспомнить, где и как это сделать.

Вот простой пример

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)

Я представляю себе что-то или это действительно можно сделать?

Ответы [ 2 ]

6 голосов
/ 10 августа 2011

Вы можете использовать locals() (или globals() в зависимости от того, что вам нужно), который возвращает имена переменных в словаре, сопоставляя значения.

bar(**locals())
3 голосов
/ 10 августа 2011

если foo написано так

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

Кроме двух других примеров, которые вы разместили, лучше, расширение всех локальных сетей - плохая идея.

...