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.
精彩评论