Python 3.x python 3中不带打印函数的字符串格式

Python 3.x python 3中不带打印函数的字符串格式,python-3.x,Python 3.x,试图理解“%s%s”%(a,a)在下面的代码中是如何工作的,到目前为止,我只在print函数中见过它。有人能解释一下它在int()中是如何工作的吗 %在某种程度上只是一个函数的语法糖,该函数接受字符串和*args(格式化的格式和参数),并返回一个字符串,该字符串是带有嵌入参数的格式字符串。因此,您可以在任何可以接受字符串的地方使用它 顺便说一句,%有点过时,“{}{}”。format(a,a)是这里更“现代”的方法,更明显的是一个返回另一个字符串的字符串方法。这个%s”格式是从Cprintf格式

试图理解
“%s%s”%(a,a)
在下面的代码中是如何工作的,到目前为止,我只在print函数中见过它。有人能解释一下它在int()中是如何工作的吗


%
在某种程度上只是一个函数的语法糖,该函数接受字符串和
*args
(格式化的格式和参数),并返回一个字符串,该字符串是带有嵌入参数的格式字符串。因此,您可以在任何可以接受
字符串的地方使用它

顺便说一句,
%
有点过时,“{}{}”。format(a,a)是这里更“现代”的方法,更明显的是一个返回另一个字符串的字符串方法。

这个
%s”
格式是从C
printf
格式借用来的,但更有趣,因为它不属于
print
语句。请注意,它只涉及一个传递给
print
(或任何函数BTW)的参数:

而不是(像C)传递给某些接受并理解它们的函数的可变数量的参数:

printf("%s%s,a,a);

这是一个独立的方法,它从字符串模板及其参数创建一个字符串(例如,解决了一个乏味的问题:“我想要一个具有格式化功能的记录器”,它可以在C或C++中使用变量变量+C++代码> VSCAFTF < /CUD>或C++ 11变量递归模板)来实现。 请注意,此格式样式现在被视为遗留样式。现在最好使用

格式
,其中占位符包装在
{}

这里的一个直接优势是,由于论点重复,您只需执行以下操作:

int("{0}{0}".format(a))
(它两次引用位置0中的唯一参数)

上的示例详细介绍了遗留语法和
格式语法

或者,由于python 3.6,您可以使用fstring:


谢谢我也可以在打印功能中使用fstrings吗?像
print(f{a}{a}”)
我试过了,它给了我语法错误。在3.6版以下使用
格式
而不是%
printf("%s%s,a,a);
int("{0}{0}".format(a))
>>> a = 12
>>> int(f"{a}{a}")
1212