字符串格式化表达式(Python)

5

字符串格式化表达式:

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

字符串格式化方法调用:

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

我个人更喜欢方法调用(第二个示例)以提高可读性,但由于它是新的,有一些机会其中一个可能会在未来被弃用。你认为哪种方法不太可能被弃用?


当引入一个新的表单时,通常是旧表单被弃用了吗? - sykora
3个回答

8

两者都可以使用,第一个在很多地方都被使用,而第二个则是最近才被引入的。所以问题更多的是你更喜欢哪种风格。我个人更喜欢基于dict的格式:

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

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


5
赞成使用基于字典的方法。还可以结合locals()和globals()函数来定义该字典! - cschol
2
可以使用format()函数来模拟基于字典的方法,只需将“**d”传递给format(),然后使用{}。 - sykora

6

哎?你在哪里看到的?http://docs.python.org/3.1/whatsnew/3.1.html 的“新特性”里面没有任何内容。 - Aaron Digulla
2
我只是知道页面上说的:它将在3.1中被弃用,并在以后的某个时间被删除...不要攻击信使 :) - Adam Neal
3.1版本中没有提到这个。:/ - Aaron Digulla

5
最初的想法是逐渐转向使用str.format()方法,同时允许两种方式共存:
PEP 3101:
新系统不会与现有字符串格式化技术的任何方法名称冲突,因此这两个系统可以共存,直到时机成熟废弃旧系统。
这个想法仍在追求中:
我们仍然鼓励人们使用新的str.format()。Python Issue 7343 由于原始的'%'方法计划在未来某个时候被弃用和移除,我建议使用str.format()编写新代码。虽然目前只是个人喜好的问题。我个人更喜欢使用基于字典的格式化,它被'%'运算符和str.format()方法支持。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接