-
Legibilidade. A sintaxe da string de formato é mais legível, pois separa o estilo dos dados. Além disso, em Python, a sintaxe
%s
forçará automaticamente qualquer nãostr
types parastr
; enquanto a concatenação funciona apenas comstr
e não é possível concatenarstr
comint
. -
Desempenho. Em Python,
str
é imutável, portanto, as strings esquerda e direita devem ser copiadas para a nova string para cada par de concatenações. Se você concatenar quatro strings de comprimento 10, você estará copiando (10 + 10) + ((10 + 10) +10) + (((10 + 10) +10) +10) = 90 caracteres, em vez de apenas 40 personagens. E as coisas pioram quadraticamente à medida que o número e o tamanho da string aumentam. Java otimiza este caso algumas vezes, transformando a série de concatenação para usarStringBuilder
, mas o CPython não. -
Para alguns casos de uso, a biblioteca de criação de log fornece uma API que usa string de formato para criar a string de entrada de log com lentidão (
logging.info("blah: %s", 4)
). Isso é ótimo para o desempenho aprimorado se a biblioteca de registro decidir que a entrada de log atual será descartada por um filtro de log, portanto, não é necessário formatá-la.