在函数def test(**params)
中,如何使用**params
的键创建由kwargs.keys()
命名的变量,其值为kwargs.values()
,我可以在函数内使用{ {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))