少しベンチマーク:
>>> 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
を、"Hello, my name is {}.".format(name)
の場合は値を配置するstr.formatを好みます。
%
のフォーマットはPython 3では廃止され、削除されるという噂がありましたが、そうではありませんでした。
なぜあなたはパフォーマンスについて心配しますか?印刷ステートメントの?あなたはどれくらい印刷しますか?ハハ。彼らはまったく同じです。どんな作品であれ使用してください。 – john
@awfullyjohn私は実用的なものより理論的な質問のほうが多いと思いますが、私はちょっと興味があったのですが、別の方法の裏に歴史があったら – Smudge
http://www.codinghorror.com/blog/2009/01/the-悲しい - 悲劇的な - 悲劇 - マイクロ - 最適化 - theater.htmlこのトピック(PythonとC#は、文字列の同様の実装を持っているので、結論が均等に適用されるので、このトピックのパフォーマンスについてのあなたの懸念のために) – SingleNegationElimination