A little benchmark:
>>> 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 Seems like b ancand c isare fastest, after d, an surprisingly a is slowest.
But, if you don't do a lot of processing, it doesn't really matter which one to use, just it is better not to mix them.
I personally prefer "".join for just simple concentenations, and str.format for placing values, like "Hello, my name is {}.".format(name).
There was a rumor that % formatting will be deprecated and removed in Python 3, but it didn't.