5

字符串格式化表达式:

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

字符串格式化方法调用:

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

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

4

3 回答 3

8

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

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

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

于 2009-11-19T13:16:43.643 回答
6

我以为我读到该%运算符已在 3.1 中被弃用,所以我会坚持使用该format()功能。

请参阅PEP 3101:字符串格式化的新方法

于 2009-11-19T13:14:54.223 回答
5

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

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

这个想法还在继续:

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

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

于 2009-11-19T16:09:41.937 回答