Python **D在string.format(**D)中是什么意思?

Python **D在string.format(**D)中是什么意思?,python,string.format,Python,String.format,我正在阅读Python编程,无法理解**D在以下代码中的含义: >>> D = {'say': 5, 'get': 'shrubbery'} >>> '%(say)s => %(get)s' % D '5 => shrubbery' >>> '{say} => {get}'.format(**D) '5 => shrubbery' 我用谷歌搜索了python中的**kwargs,大部分结果都是关于让函数接受任意数量的

我正在阅读Python编程,无法理解**D在以下代码中的含义:

>>> D = {'say': 5, 'get': 'shrubbery'}
>>> '%(say)s => %(get)s' % D
'5 => shrubbery'
>>> '{say} => {get}'.format(**D)
'5 => shrubbery'
我用谷歌搜索了python中的**kwargs,大部分结果都是关于让函数接受任意数量的关键字参数


这里的string.format(**D)看起来不像是让函数接受任意数量的关键字参数,因为我看到字典类型变量D只是一个参数。但这意味着什么呢?

似乎就是你要找的。

似乎就是你要找的。

简单回答,我相信稍后会有人提出一篇论文

**D
这里表示将使用字典
D
来填充字符串格式中的“命名孔”。如您所见,
{say}
5
替换,
{get}
灌木林
替换

实际上,它与用于将任意数量的参数传递给函数的机制相同<代码>格式需要的参数与字符串中的“孔”一样多。如果你想把它们写进字典,那就是你要做的


有关更多信息,请查阅Python文档,如Prashant所建议的。

简短回答,我相信稍后会有人提出一篇论文

**D
这里表示将使用字典
D
来填充字符串格式中的“命名孔”。如您所见,
{say}
5
替换,
{get}
灌木林
替换

实际上,它与用于将任意数量的参数传递给函数的机制相同<代码>格式需要的参数与字符串中的“孔”一样多。如果你想把它们写进字典,那就是你要做的


有关更多信息,请按照Prashant的建议,在Python文档中查看和。

**D
用于解包参数。它将字典扩展为一系列关键字赋值
,因此

'{say} => {get}'.format(**D)
变成

'{say} => {get}'.format(say = 5, get = shrubbery)

**kwargs
技巧之所以有效,是因为关键字参数是字典

**D
用于解包参数。它将字典扩展为一系列关键字赋值
,因此

'{say} => {get}'.format(**D)
变成

'{say} => {get}'.format(say = 5, get = shrubbery)

**kwargs
技巧之所以有效,是因为关键字参数是字典

你看到了吗?是的,我看过那个问题,但我无法在那里建立联系。那里的**kwargs只出现在函数def中,而不是在调用函数或方法时出现。我忽略了Alex Martelli给出的问题的答案。他提出了一个非常好的观点,“关于在通话中使用**kw,”…你看到了吗?是的,我确实看过那个问题,但我无法在那里建立连接。那里的**kwargs只出现在函数def中,而不是在调用函数或方法时出现。我忽略了Alex Martelli给出的问题的答案。他提出了一个非常好的观点“关于在通话中使用**kw,”…三个答案结合起来让我清楚地了解了它是什么。谢谢你足够详细的解释和简单易懂的答案!这三个答案的结合让我对它有了一个清晰的理解。谢谢你足够详细的解释和简单易懂的答案!