At the time of asking this question, I\'m using Python 3.8
When I say efficient, I\'m only referring to the speed at which the strings are concatenated,
from datetime import datetime
a = "start"
b = " end"
start = datetime.now()
print(a+b)
print(datetime.now() - start)
start = datetime.now()
print("".join((a, b)))
print(datetime.now() - start)
start = datetime.now()
print('{0}{1}'.format(a, b))
print(datetime.now() - start)
# Output
# start end
# 0:00:00.000056
# start end
# 0:00:00.000014
# start end
# 0:00:00.000014
Looks like .join() and .format() are basically the same and 4x faster. An F string, eg:
print(f'{a} {b}')
is also a very quick and clean method, especially when working with more complex formats.