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”
格式是从Cprintf
格式借用来的,但更有趣,因为它不属于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