En Python, je ne sais pas quand et comment utiliser la concaténation de chaînes de caractères par rapport à la substitution de chaînes de caractères. Comme la concaténation de chaînes de caractères a connu d'importants gains de performance, est-ce (de plus en plus) une décision stylistique plutôt qu'une décision pratique ?
Pour un exemple concret, comment gérer la construction d'URIs flexibles :
DOMAIN = 'http://stackoverflow.com'
QUESTIONS = '/questions'
def so_question_uri_sub(q_num):
return "%s%s/%d" % (DOMAIN, QUESTIONS, q_num)
def so_question_uri_cat(q_num):
return DOMAIN + QUESTIONS + '/' + str(q_num)
Edit : Il y a aussi eu des suggestions pour joindre une liste de chaînes de caractères et pour utiliser la substitution nommée. Ce sont des variantes du thème central, qui est de savoir quelle est la bonne façon de faire à quel moment ? Merci pour les réponses !
0 votes
C'est drôle, en Ruby, l'interpolation de chaînes est généralement plus rapide que la concaténation...
0 votes
Vous avez oublié de retourner "".join([DOMAINE, QUESTIONS, str(q_num)])
0 votes
Je ne suis pas un expert de Ruby, mais je parierais que l'interpolation est plus rapide parce que les chaînes de caractères sont mutables en Ruby. Les chaînes de caractères sont des séquences immuables en Python.
1 votes
Juste un petit commentaire sur les URIs. Les URI ne sont pas exactement comme les chaînes de caractères. Il existe des URI, il faut donc être très prudent lorsque vous les concaténerez ou les comparerez. Exemple : un serveur délivrant ses représentations par http sur le port 80. exemple.org (sans slah à la fin) exemple.org/ (slash) exemple.org:80/ (slah+port 80) sont la même uri mais pas la même chaîne.