问题
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 over time. Which do you think is less likely to be deprecated?
回答1:
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.
回答2:
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.
回答3:
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
来源:https://stackoverflow.com/questions/1763184/string-formatting-expressions-python