Eu entendo que devemos usar %spara concatenar uma string em vez de +em Python.
Eu poderia fazer qualquer um dos seguintes:
hello = "hello"
world = "world"
print hello + " " + world
print "%s %s" % (hello, world)
print "{} {}".format(hello, world)
print ' '.join([hello, world])
Mas por que devo usar outra coisa senão a +? É mais rápido escrever concatenação com um simples +. Então, se você observar a sequência de formatação, especifique os tipos, por exemplo, %se assim por diante %d. Entendo que seria melhor ser explícito sobre o tipo.
Mas então li que o uso +para concatenação deve ser evitado, mesmo que seja mais fácil digitar. Existe uma razão clara para que as seqüências de caracteres devam ser concatenadas de uma dessas outras maneiras?
%snão é para concatenação, é uma especificação de conversão para formatação de string derivada de C's printf(3). Existem casos para usar esse ou um operador de concatenação; que você usa deve basear-se no julgamento da situação, não no dogma. O quão fácil é escrever o código é totalmente irrelevante, porque você fará isso apenas uma vez.
print(f"{hello} {world}"), tem legibilidade de concatenação, pois as variáveis são vistas onde ocorrem na cadeia e são mais rápidas que str.format.