python:** kwargs变量

时间:2017-06-30 18:38:37

标签: python function input

在函数def test(**params)中,如何使用**params的键创建由kwargs.keys()命名的变量,其值为kwargs.values(),我可以在函数内使用{ {1}}?

1 个答案:

答案 0 :(得分:-2)

编辑:这种方法在大多数情况下都不起作用。我在IPython中对它进行了测试,它在外部环境中工作。

您应该只使用kwargs __get__查找。这样做是不好的做法,

~~但是如果你坚持创建这些变量,你可以这样做:locals().update(kwargs)。这样做可以使这段代码有效:~~

def foo(**kwargs):
   locals().update(kwargs)
   return a + 3

print(foo(a=3))

~~将输出6 ~~

将输出NameError:名称'a'未定义

编辑:此作品

我真的很惊讶更新本地人在标准解释器中不起作用。我还发现eval也不起作用。多年来我一直在IPython中使用这样的技巧。看看Modifying locals in Python看来你曾经能够在Python 2中使用exec来做到这一点,但它在Python 3中不再有效(这可能是一件好事)。

然而,我发现了一个我相信有效的黑客行为。再说一次,请不要在实践中这样做。

def foo(**kwargs):
    foo.__globals__.update(kwargs)
    return a + 3

print(foo(a=3))