“**关键字形式的形式参数”的具体用途是什么?我将其放在引号中,因为这就是文档中提到的内容,但我很难找到有关它的信息,并认为也许有一个正式的术语。
据我了解,它允许用户执行类似的操作
def foo(**keywords):
for i in keywords:
print(i, ":", keywords[i])
foo(val1="1", val2="2", val3="3")
输出:
val1 : 1
val2 : 2
val3 : 3
这样做的好处到底是什么?传递字典变量不是更容易理解吗?
最佳答案
如果您使用字典,调用函数将如下所示:
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>
这使我能够支持所有相同的论点,而无需明确列出所有论点。
关于python - **关键字形式的形式参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10130070/