human
Pourquoi est-ce que %s est meilleur que + pour la concaténation en python
gpt
Il y a plusieurs avantages à utiliser ```%s``` plutôt que ```+``` pour la concaténation de chaînes de caractères en Python :
* Lisibilité. La syntaxe de la chaîne de formatage est plus lisible, car elle sépare le style des données. De plus, en Python, la syntaxe ```%s``` convertira automatiquement tout type autre que ```str``` en ```str``` ; tandis que la concaténation ne fonctionne qu'avec ```str```, et vous ne pouvez pas concaténer ```str``` avec ```int```.
* Performance. En Python, les chaînes de caractères sont immuables, donc la chaîne de gauche et la chaîne de droite doivent être copiées dans la nouvelle chaîne pour chaque paire de concaténation. Si vous concaténez quatre chaînes de longueur 10, vous copierez (10+10) + ((10+10)+10) + (((10+10)+10)+10) = 90 caractères, au lieu de seulement 40 caractères. Et les choses deviennent quadratiquement pires à mesure que le nombre et la taille des chaînes augmentent. Java optimise parfois ce cas en transformant la série de concaténations pour utiliser ```StringBuilder```, mais CPython ne le fait pas.
* Pour certains cas d'utilisation, la bibliothèque de journalisation fournit une API qui utilise la chaîne de formatage pour créer la chaîne d'entrée de journal de manière paresseuse (```logging.info("blah: %s", 4)```). Cela est très utile pour améliorer les performances si la bibliothèque de journalisation décide que l'entrée de journal actuelle sera rejetée par un filtre de journal, elle n'a donc pas besoin de formater la chaîne.