Question philosophique ... ou pas !

Le
Fouff
Bien le bonjour à tous et toutes.

Une question me gène depuis un bon moment.
Dans du code que je vois, je trouve très souvent la mise en forme de chaine de caractères de la forme :
buf = "".join(("/Title (", title, ")"))
f.write(buf) # f étant un descripteur de fichier (ouvert en écriture).

Ma question maintenant :
Quel est l'interêt de ce
buf = "".join()
par rapport à un
buf = "/Title (", title, ")" ?

Voire éventuellement en question subsidiaire par rapport à un bon vieux
buf = "/Title (%s)" % title ?

Si quelqu'un à une réponse autre que 42 à me fournir, je lui en serais reconnaissant.
Merci d'avance
Fouff
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
jean-michel bain-cornu
Le #653626
Ma question maintenant :
Quel est l'interêt de ce
buf = "".join(...)
par rapport à un
buf = "/Title (", title, ")n" ?


A mon humble avis, c'est réservé à ceux qui fument...

Bruno Desthuilliers
Le #653625
Bien le bonjour à tous et toutes.

Une question me gène depuis un bon moment.
Dans du code que je vois, je trouve très souvent la mise en forme de
chaine de caractères de la forme :
buf = "".join(("/Title (", title, ")n"))
f.write(buf) # f étant un descripteur de fichier (ouvert en écriture).

Ma question maintenant :
Quel est l'interêt de ce
buf = "".join(...)
par rapport à un
buf = "/Title (", title, ")n" ?

Voire éventuellement en question subsidiaire par rapport à un bon vieux
buf = "/Title (%s)n" % title ?


A part rendre le code imbitable, je ne vois pas bien.

Eric Deveaud
Le #653624
Fouff wrote:
Bien le bonjour à tous et toutes.

Quel est l'interêt de ce
buf = "".join(...)


un gus qui a mal lu ou plutôt pas relu, et encore moin compris les questions
concernant l'inneficacité de la concaténation des chaines qui affectaient les
version postérieures de python.


par rapport à un
buf = "/Title (", title, ")n" ?


pas pareil tu vas introduire un espace entre title et les parenth?ses
encadrantes

Voire éventuellement en question subsidiaire par rapport à un bon vieux
buf = "/Title (%s)n" % title ?


propre, clair et concis
quoi que la forme canonique soit plutôt
buf = "/Title (%s)n" % ( title )
mais je chipote

Si quelqu'un à une réponse autre que 42 à me fournir, je lui en serais reconnaissant.


autre hypoth?se, l'auteur du code qui t'interpelles veux rendre son code abscon
et il y a arrive ;)

Eric

kib
Le #653385
Quel est l'interêt de ce
buf = "".join(...)


un gus qui a mal lu ou plutôt pas relu, et encore moin compris les questions
concernant l'inneficacité de la concaténation des chaines qui affectaient les
version postérieures de python.



Même s'il est établi que les nouvelles versions gêrent mieux la
concaténation des chaînes avec "+", je continue toujours à préférer les
"".join(maliste) selon les bonnes vieilles recommandations, sachant
qu'un string est immuable.

C'est maintenant hors-propos où cela a été optimisé pour que la
différence ne se "voit" plus trop ?

Kib.


Encolpe Degoute
Le #653384

propre, clair et concis
quoi que la forme canonique soit plutôt
buf = "/Title (%s)n" % ( title )
mais je chipote


uf = "/Title (%(title)s)n" % {'title': title }

--
Encolpe DEGOUTE
http://encolpe.degoute.free.fr/
Logiciels libres, hockey sur glace et autres activités cérébrales

Bruno Desthuilliers
Le #653383
Fouff wrote:
(snip)

Voire éventuellement en question subsidiaire par rapport à un bon vieux
buf = "/Title (%s)n" % title ?


propre, clair et concis
quoi que la forme canonique soit plutôt
buf = "/Title (%s)n" % ( title )


buf = "/Title (%s)n" % (title,)

Hormis le cas de la notation littérale pour le tuple vide, c'est la
virgule qui fait le tuple, pas les parenthèses.

mais je chipote


!-)


Bruno Desthuilliers
Le #653382

propre, clair et concis
quoi que la forme canonique soit plutôt
buf = "/Title (%s)n" % ( title )
mais je chipote


uf = "/Title (%(title)s)n" % {'title': title }



uf = "/Title (%(title)s)n" % locals()

!-)


Bruno Desthuilliers
Le #653381
Quel est l'interêt de ce
buf = "".join(...)


un gus qui a mal lu ou plutôt pas relu, et encore moin compris les
questions
concernant l'inneficacité de la concaténation des chaines qui
affectaient les
version postérieures de python.



Même s'il est établi que les nouvelles versions gêrent mieux la
concaténation des chaînes avec "+", je continue toujours à préférer les
"".join(maliste) selon les bonnes vieilles recommandations, sachant
qu'un string est immuable.

C'est maintenant hors-propos où cela a été optimisé pour que la
différence ne se "voit" plus trop ?


Pour autant que je sache, on a maintenant, au moins dans certains cas,
de meilleures perfs avec la concaténation.

L'intérêt de la liste est surtout les manipulations qu'elle permet
*avant* la construction du résultat final (tris, filtres etc).



Eric Deveaud
Le #653380
Bruno Desthuilliers wrote:
buf = "/Title (%s)n" % ( title )


buf = "/Title (%s)n" % (title,)

Hormis le cas de la notation littérale pour le tuple vide, c'est la
virgule qui fait le tuple, pas les parenthèses.

mais je chipote


!-)


? chipoteur, chipoteur et demi, mais mercide cette remarque tr?s pertinente.

Eric qui part se mettre des baffes ;-)


MC
Le #653379
Bonsoir !

Perso, je vois une explication possible : Le développeur ne sait pas,
au moment où il écrit le code, quel délimiteur il (devra) utiliser(a).
Dès lors, avec le code cité, il pourra très facilement modifier.

Exemples :

buf = ";".join(("/Title (", title, ")n"))
buf = "t".join(("/Title (", title, ")n"))
buf = " - ".join(("/Title (", title, ")n"))
buf = "|".join(("/Title (", title, ")n"))

Maintenant, est-ce que cette hypothèse est la bonne ?






--
@-salutations

Michel Claveau
Publicité
Poster une réponse
Anonyme