Python 3:使用%s和.format()

Zau*_*bov 24 python string string-formatting

我最终切换%.format()2.x代码中的字符串格式化运算符,以便将来更容易迁移到3.x. 有一点令人惊讶的是,不仅%在Py3中保留了样式格式,而且它在标准库代码中被广泛使用.这似乎是合乎逻辑的,因为写作'(%s)' % variable有点短,也许比较容易理解'({})'.format(variable).但我仍有疑问.在代码中使用这两种方法是否合适(pythonic?)?谢谢.

Vla*_*lad 23

Python 3.2文档说,%最终会消失.

http://docs.python.org/3.2/tutorial/inputoutput.html#old-string-formatting

由于str.format()很新,很多Python代码仍然使用% 运算符.但是,由于这种旧式格式最终将从语言中删除,str.format()因此通常应该使用.

但正如@regilero所说,判决从3.3开始,这可能表明实际情况并非如此.有一些谈话这里暗示了同样的事情.

Python 3.4开始,第7.1.1段写道:

%运算符也可用于字符串格式化.它将左参数解释为类似于应用于右参数的sprintf()样式格式字符串,并返回由此格式化操作产生的字符串.

另请参见Python 3.4 4.7.2 printf-style字符串格式.

  • 这个句子已经在python 3.3文档中删除了,它仍然存在于3.2 http://docs.python.org/3.2/tutorial/inputoutput.html#old-string-formatting (3认同)