“表单的形式参数**关键字”的目的到底是什么?我把它放在引文中,因为这是文档中提到的,但我很难找到关于它的信息,我想也许有一个正式的术语来描述它。
据我所知,它允许用户执行以下操作
def foo(**keywords):
for i in keywords:
print(i, ":", keywords[i])
foo(val1="1", val2="2", val3="3")输出:
val1 : 1
val2 : 2
val3 : 3这到底有什么好处呢?传递一个字典变量不是更容易理解吗?
发布于 2012-04-13 03:13:17
如果使用字典,则调用函数将如下所示:
myfunv({"key1": "value1", "key2": "value2"})使用**kwargs这就变成了
myfunc(key1="value1", key2="value2")很多人更喜欢后者。
当您透明地将参数传递给另一个函数或类时,此构造也非常有用。例如,在对Tkinter小部件进行子类化时,我经常使用它。我想要支持基类的所有选项,所以我这样编写代码:
class MyFrame(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
<more code here>这使我可以支持所有相同的论点,而不必显式列出所有论点。
https://stackoverflow.com/questions/10130070
复制相似问题