What does **D mean in string.format(**D)?
本问题已经有最佳答案,请猛点这里访问。
我正在阅读编程python,无法理解下面代码中的**d是什么意思:
1 2 3 4 5 | >>> 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用于解包参数。它将字典扩展为一系列关键字赋值,因此
'{say} => {get}'.format(**D)
< /块引用>< /块引用>
变成
'{say} => {get}'.format(say = 5, get = shrubbery)
< /块引用>< /块引用>
由于关键字参数是字典,所以**Kwargs技巧有效。
简短的回答,我相信稍后会有人提出一篇论文。
这里的
**D 表示将使用字典D 来填充字符串格式中的"命名孔"。如你所见,{say} 被5 取代,{get} 被shrubbery 取代。实际上,它与用于向函数传递任意数量参数的机制相同;
format 期望的参数与字符串中的"孔"一样多。如果你想用字典把它们包起来,你就是这样做的。如prashant所建议的,有关更多信息,请查看python文档中的关键字参数和解包。