小基準:
>>> a = lambda: "{} World".format("Hello")
>>> b = lambda: "Hello" + " World"
>>> c = lambda: "%s World" % "Hello"
>>> d = lambda: "".join(("Hello", " World"))
>>> a(), b(), c(), d()
('Hello World', 'Hello World', 'Hello World', 'Hello World')
>>> timeit.timeit(a)
0.7830071449279785
>>> timeit.timeit(b)
0.18782711029052734
>>> timeit.timeit(c)
0.18806695938110352
>>> timeit.timeit(d)
0.3966488838195801
好像b和c是最快的,之後d,一個令人驚訝的是一個最慢。
但是,如果你不做很多處理,使用哪一個並不重要,只是最好不要混合它們。
我個人更喜歡"".join
只是簡單的concentenations,和str.format放置值,如"Hello, my name is {}.".format(name)
。
有傳聞稱%
格式化將在Python 3中被棄用和刪除,但它沒有。
爲什麼你會關注性能......打印聲明?你打算打印多少?哈哈。他們幾乎都是一樣的。使用任何作品。 – john
@awfullyjohn我想這不僅僅是一個實際的問題,我只是有興趣,如果有不同的方法背後的歷史 – Smudge
請閱讀http://www.codinghorror.com/blog/2009/01/the- sad-tragedy-of-micro-optimization-theater.html因爲你對這個主題的性能問題的擔憂(python和C#有類似的字符串實現,所以結論同樣適用) – SingleNegationElimination