案例1:
"{arg1} {arg2}".format (10, 20)
它将给出KeyError: 'arg1'
,因为我没有传递命名参数。
案例2:
"{arg1} {arg2}".format(arg1 = 10, arg2 = 20)
现在它将正常工作,因为我传递了命名参数。
它会打印'10 20'
案例3:
如果我传错名字,它会显示KeyError: 'arg1'
"{arg1} {arg2}".format(wrong = 10, arg2 = 20)
但是
案例4:
如果我以错误的顺序传递命名参数
"{arg1} {arg2}".format(arg2 = 10, arg1 = 20)
它起作用了。。。
它打印出'20 10'
我的问题是为什么它有效,在这种情况下,命名参数的用法是什么。
额外的好处包括
"{foo} {foo}".format(foo="bar")
给出“bar bar”请注意,您也可以提供额外的参数而不会导致错误。 当
例如:
命名替换字段(aformat string中的
{...}
部分)与.format()
方法的关键字参数匹配,而不是与位置参数匹配。关键字参数就像字典中的键;顺序无关紧要,因为它们与名称匹配。
如果要与位置参数匹配,请使用数字:
在Python2.7及更高版本中,您可以省略数字;然后,
{}
替换字段按照格式字符串中的出现顺序自动编号:格式化字符串可以与位置和关键字参数匹配,并且可以多次使用参数:
引用format string specification:
强调我的。
如果您正在创建一个大的格式化字符串,那么使用命名替换字段通常更具可读性和可维护性,因此您不必一直计算参数并找出哪个参数进入结果字符串的位置。
您还可以使用
**keywords
调用语法将现有字典应用于格式,从而可以轻松地将CSV文件转换为格式化输出:这里,
picture
,link
,description
和price
都是row
字典中的键,而且当我将row
应用于格式化字符串时,更容易看到发生了什么。相关问题 更多 >
编程相关推荐