开发者

String formatting expressions (Python)

开发者 https://www.devze.com 2022-12-12 02:55 出处:网络
String formatting expressions: \'This is %d %s example!\' % (1, \'nice\') String formatting method calls:

String formatting expressions:

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

String formatting method calls:

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

I personally prefer the method calls (second example) for readability but since it is new, there is some chance that one or the other of these may become deprecated o开发者_如何学Gover time. Which do you think is less likely to be deprecated?


Neither; the first one is used in a lot of places and the second one was just introduced. So the question is more which style you prefer. I actually prefer the dict based formatting:

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

It makes sure that the right parameter goes into the right place, allows to reuse the same parameter in several places, etc.


I thought I read that the % operator is being deprecated in 3.1 already, so I'd stick with the format() function.

See PEP 3101: A New Approach To String Formatting


The original idea was to gradually switch to str.format() approach while allowing both ways:

PEP 3101:
The new system does not collide with any of the method names of the existing string formatting techniques, so both systems can co-exist until it comes time to deprecate the older system.

The idea is still being pursued:

We are still encouraging people to use the new str.format(). Python Issue 7343

Since the original '%' approach is planned to be deprecated and removed at some point in the future, I would suggest writing new code with str.format(). Though at the moment, it is just a matter of personal preference. I personally prefer using dictionary-based formatting, which is supported by both '%' operator and str.format() method.

0

精彩评论

暂无评论...
验证码 换一张
取 消