Python 使用字符串格式化程序进行转换

Python 使用字符串格式化程序进行转换,python,string,python-2.7,string-formatting,Python,String,Python 2.7,String Formatting,我正在使用Python 2.7.6。我今天偶然发现了这个 我的意思是通过格式化程序将整数转换为字符串。像这样: a = 50 b = "%d" % (a) 然而,我却这样做了 a = 50 b = "%s" % (a) 它也运行良好。我不明白这是怎么发生的。这里发生了双重转换吗 确切地说,%s如何接受一个整数而仍然不抛出任何错误?%s%%(a)调用a的\u str\u方法 您不需要使用“%d”%(a)将整数转换为字符串,只需执行str(a) 但是,使用“%d”%(a)将确保a可转换为整数,例

我正在使用Python 2.7.6。我今天偶然发现了这个

我的意思是通过格式化程序将整数转换为字符串。像这样:

a = 50
b = "%d" % (a)
然而,我却这样做了

a = 50
b = "%s" % (a)
它也运行良好。我不明白这是怎么发生的。这里发生了双重转换吗

确切地说,
%s
如何接受一个整数而仍然不抛出任何错误?

%s%%(a)
调用
a
\u str\u
方法

您不需要使用
“%d”%(a)
将整数转换为字符串,只需执行
str(a)

但是,使用
“%d”%(a)
将确保a可转换为整数,例如
“%d”%“hello world”
将不起作用。

%s”%(a)
调用
str\uuuuuuuuuuuu
方法

您不需要使用
“%d”%(a)
将整数转换为字符串,只需执行
str(a)

但是,使用
“%d”%(a)
将确保a可转换为整数,例如
“%d”%“hello world”
将不起作用。

%s”%(a)
调用
str\uuuuuuuuuuuu
方法

您不需要使用
“%d”%(a)
将整数转换为字符串,只需执行
str(a)

但是,使用
“%d”%(a)
将确保a可转换为整数,例如
“%d”%“hello world”
将不起作用。

%s”%(a)
调用
str\uuuuuuuuuuuu
方法

您不需要使用
“%d”%(a)
将整数转换为字符串,只需执行
str(a)

但是,使用
“%d”%(a)
将确保a可转换为整数,例如
“%d”%“hello world”
将不起作用。

来自:

转换类型为:

's'|字符串(使用str()转换任何Python对象)

所以基本上它调用str(a)
,正如horns所说。

来自:

转换类型为:

's'|字符串(使用str()转换任何Python对象)

所以基本上它调用str(a)
,正如horns所说。

来自:

转换类型为:

's'|字符串(使用str()转换任何Python对象)

所以基本上它调用str(a)
,正如horns所说。

来自:

转换类型为:

's'|字符串(使用str()转换任何Python对象)



所以基本上它调用
str(a)
,正如horns所说。

因为整数有一个定义良好的
\uuuu str\uuuu
方法。这是否意味着我不需要在打印语句中使用
%d
?不,您应该只使用
%d
。首先,对于正在阅读您的代码的人来说,这是很清楚的,如果有可能传入其他类型的对象而不是整数(
%s
将适用于任何对象),也会引发错误。其次,例如填充0:
'%020d'%2
'%020s'%2
将返回不同的输出。这是
%d
的一个很好的用例。谢谢…因为整数有一个定义良好的
\uuu str\uuu
方法。这是否意味着我不需要对打印语句使用
%d
?不,您应该只使用
%d
。首先,对于正在阅读您的代码的人来说,这是很清楚的,如果有可能传入其他类型的对象而不是整数(
%s
将适用于任何对象),也会引发错误。其次,例如填充0:
'%020d'%2
'%020s'%2
将返回不同的输出。这是
%d
的一个很好的用例。谢谢…因为整数有一个定义良好的
\uuu str\uuu
方法。这是否意味着我不需要对打印语句使用
%d
?不,您应该只使用
%d
。首先,对于正在阅读您的代码的人来说,这是很清楚的,如果有可能传入其他类型的对象而不是整数(
%s
将适用于任何对象),也会引发错误。其次,例如填充0:
'%020d'%2
'%020s'%2
将返回不同的输出。这是
%d
的一个很好的用例。谢谢…因为整数有一个定义良好的
\uuu str\uuu
方法。这是否意味着我不需要对打印语句使用
%d
?不,您应该只使用
%d
。首先,对于正在阅读您的代码的人来说,这是很清楚的,如果有可能传入其他类型的对象而不是整数(
%s
将适用于任何对象),也会引发错误。其次,例如填充0:
'%020d'%2
'%020s'%2
将返回不同的输出。这是
%d
的一个很好的用例。谢谢…我用它来打印报表。否则,我将使用
str(a)
,不会遇到这种情况:-)它是否像
%d%%(a)
更像
str(int(a))
%d%%(a)
的逻辑是。简短回答:如果
a
是非长非整数类型,它会在呈现最终字符串之前尝试转换为整数。非数字类型在未尝试转换的情况下被拒绝。我将其用于打印语句。否则,我将使用
str(a)
,不会遇到这种情况:-)它是否像
%d%%(a)
更像
str(int(a))
%d%%(a)
的逻辑是。简短回答:如果
a
是非长非整数类型,它会在呈现最终字符串之前尝试转换为整数。非数字类型在未尝试转换的情况下被拒绝。我将其用于打印语句。否则,我将使用
str(a)
,不会遇到这种情况:-)它是否像
%d%%(a)
更像
str(int(a))
%d%%(a)
的逻辑是。简短回答:如果