试图了解下面的代码中"%s%s" %(a,a)
的工作方式,到目前为止,我只在print函数中看到它。有人可以解释一下它在int()中的工作方式吗?
a=input()
b=int("%s%s" %(a,a))
答案 0 :(得分:2)
%
在某种程度上只是语法上的糖,它接受一个字符串和一个*args
(一种格式和用于格式化的参数)并返回一个字符串,该字符串是嵌入了格式的字符串参数。因此,您可以在string
可接受的任何地方使用它。
顺便说一句,%
有点过时了,“ {} {}”。format(a,a)在这里是更“现代”的方法,并且显然是返回另一个字符串的字符串方法。
答案 1 :(得分:2)
此"%s"
格式是从C printf
格式借来的,但更有趣,因为它不属于print
语句。请注意,它只涉及传递给print
(或任何函数BTW)的一个参数:
print("%s%s" % (a,a))
而不是(像C一样)传递给接受和理解它们的某些函数的可变数量的参数:
printf("%s%s,a,a);
这是从字符串模板及其参数创建字符串的独立方法(例如,它解决了一个乏味的问题:“我想要具有格式化功能的记录器”,可以使用C或C ++进行大量工作,使用可变参数+ vsprintf
或C ++ 11可变递归模板)。
请注意,这种格式样式现在被认为是旧式的。现在,您最好使用format
,将占位符包裹在{}
中。
这里的直接优点之一是,由于重复了该参数,您只需要执行以下操作即可:
int("{0}{0}".format(a))
(它在位置0引用了唯一的参数两次)
在https://pyformat.info/上的示例均详细说明了传统语法和format
语法
或从python 3.6开始,您可以使用 fstrings :
>>> a = 12
>>> int(f"{a}{a}")
1212