【发布时间】:2013-07-27 13:52:46
【问题描述】:
案例 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'
我的问题是它为什么会起作用以及在这种情况下命名参数有什么用。
【问题讨论】:
-
我认为它们只是为了便于阅读。
-
因为它是通过名称而不是位置来查找的...您认为命名参数是什么意思?
-
看起来您只是将 arg2 重命名为 arg1,反之亦然。换句话说,arg1 现在是 20 而不是 10,这就是为什么您会看到字符串中的第一个数字打印 20 而不是 10。要进行所需的测试,您只需将 args 及其值移动到新位置format() 调用,它会按照您期望的方式运行。这里没有什么不寻常的。
标签: python string arguments string-formatting