python - **关键字形式的形式参数

标签 python keyword

“**关键字形式的形式参数”的具体用途是什么?我将其放在引号中,因为这就是文档中提到的内容,但我很难找到有关它的信息,并认为也许有一个正式的术语。

据我了解,它允许用户执行类似的操作

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/

相关文章:

ios - Apple App Store 高级分析

python - python核心使用的是二分查找算法吗?

python - 计算数据框中两列中作为相反对存在的唯一值的数量?

python - 如何从 Vscode 访问 Docker 容器文件?

c - C 有 32 个或 44 个关键字吗?

java - 为什么我会收到 <identifier> 预期错误?

关键词提取软件

C#:使用 Python.Runtime 未找到

python - 如何使用函数的参数作为函数内另一个对象的对象?

vector - 将向量连接到普通关键字或关键字向量的惯用方法