字符串格式表达式(Python)

时间:2009-11-19 13:09:52

标签: python string printf deprecated

字符串格式表达式:

'This is %d %s example!' % (1, 'nice')

字符串格式化方法调用:

'This is {0} {1} example!'.format(1, 'nice')

我个人更喜欢方法调用(第二个例子)的可读性,但由于它是新的,因此有可能随着时间的推移,这些中的一个或另一个可能会被弃用。您认为哪个不太可能被弃用?

3 个答案:

答案 0 :(得分:8)

既不;第一个用于很多地方,第二个用于刚刚介绍。所以问题是你更喜欢哪种风格。我实际上更喜欢基于dict的格式:

d = { 'count': 1, 'txt': 'nice' }
'This is %(count)d %(txt)s example!' % d

确保正确的参数进入正确的位置,允许在多个地方重复使用相同的参数等。

答案 1 :(得分:6)

我以为我已经读过%运算符已经在3.1中被弃用了,所以我坚持使用format()函数。

请参阅PEP 3101: A New Approach To String Formatting

答案 2 :(得分:5)

最初的想法是逐步切换到str.format()方法,同时允许两种方式:

  

PEP 3101:
  新系统不会与现有字符串格式化技术的任何方法名称冲突,因此两个系统可以共存,直到弃用旧系统为止。

这个想法仍在继续:

  

我们仍然鼓励人们使用新的str.format()。   Python Issue 7343

由于原来的'%'方法计划在将来的某个时候被弃用和删除,我建议用str.format()编写新的代码。虽然目前只是个人偏好的问题。我个人更喜欢使用基于字典的格式,'%'运算符和str.format()方法都支持这种格式。