问题
In Python there seem to be two different ways of generating formatted output:
user = "Alex"
number = 38746
print("%s asked %d questions on stackoverflow.com" % (user, number))
print("{0} asked {1} questions on stackoverflow.com".format(user, number))
Is there one way to be preferred over the other? Are they equivalent, what is the difference? What form should be used, especially for Python3?
回答1:
Use the format
method, especially if you're concerned about Python 3 and the future. From the documentation:
The formatting operations described here are modelled on C's
printf()
syntax. They only support formatting of certain builtin types. The use of a binary operator means that care may be needed in order to format tuples and dictionaries correctly. As the new :ref:string-formatting
syntax is more flexible and handles tuples and dictionaries naturally, it is recommended for new code. However, there are no current plans to deprecateprintf
-style formatting.
回答2:
.format
was introduced in Python2.6
If you need backward compatibility with earlier Python, you should use %
For Python3 and newer you should use .format
for sure
.format
is more powerful than %
. Porting %
to .format
is easy but the other way round can be non trivial
回答3:
The docs say that the format
method is preferred for new code. There are currently no plans to remove % formatting, though.
回答4:
You can use both .No one said % formatting expression is deprecated.However,as stated before the format method call is a tad more powerful. Also note that the % expressions are bit more concise and easier to code.Try them and see what suits you best
来源:https://stackoverflow.com/questions/12382719/python-way-of-printing-with-format-or-percent-form