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 ?
Si quelqu'un à une réponse autre que 42 à me fournir, je lui en serais reconnaissant.
Merci d'avance
Fouff
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()
J'aime déja pas trop (question de gout personel) les formes avec les dictionnaires, qui sont pourtant beaucoup plus lisibles qu'une succession de variables qu'il faut suivre dnas le bon ordre je n'avait pas pensé au locals(), va falloir que je m'habitue.
merci
Bruno Desthuilliers wrote:
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()
J'aime déja pas trop (question de gout personel) les formes avec les
dictionnaires, qui sont pourtant beaucoup plus lisibles qu'une succession de
variables qu'il faut suivre dnas le bon ordre je n'avait pas pensé au locals(),
va falloir que je m'habitue.
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()
J'aime déja pas trop (question de gout personel) les formes avec les dictionnaires, qui sont pourtant beaucoup plus lisibles qu'une succession de variables qu'il faut suivre dnas le bon ordre je n'avait pas pensé au locals(), va falloir que je m'habitue.
merci
kib
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.
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.
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.
Le Wed, 24 Oct 2007 14:12:46 +0200, Fouff a écrit :
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(...)
C'est un idiome Python connu, qui fonctionne, et tout développeur Python sait (devrais savoir) que ça permet de concaténer simplement une séquence de chaînes de caractères.
par rapport à un buf = "/Title (", title, ")n" ?
Là tu crée un tuple, le f.write(buf) échouera: TypeError: argument 1 must be string or read-only character buffer, not tuple
Voire éventuellement en question subsidiaire par rapport à un bon vieux buf = "/Title (%s)n" % title ?
Perso, s'il n'y a qu'un titre à insérer dans une chaîne, je préfèrerais cette forme. Le "".join() est plus adapté lorsque tu constitue dynamiquement une séquence de chaînes.
Si quelqu'un à une réponse autre que 42 à me fournir, je lui en serais reconnaissant. Merci d'avance Fouff
43.
-- Laurent POINTAL -
Le Wed, 24 Oct 2007 14:12:46 +0200, Fouff a écrit :
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(...)
C'est un idiome Python connu, qui fonctionne, et tout développeur Python
sait (devrais savoir) que ça permet de concaténer simplement une séquence
de chaînes de caractères.
par rapport à un
buf = "/Title (", title, ")n" ?
Là tu crée un tuple, le f.write(buf) échouera:
TypeError: argument 1 must be string or read-only character buffer, not
tuple
Voire éventuellement en question subsidiaire par rapport à un bon vieux
buf = "/Title (%s)n" % title ?
Perso, s'il n'y a qu'un titre à insérer dans une chaîne, je préfèrerais
cette forme. Le "".join() est plus adapté lorsque tu constitue
dynamiquement une séquence de chaînes.
Si quelqu'un à une réponse autre que 42 à me fournir, je lui en serais
reconnaissant. Merci d'avance
Fouff
Le Wed, 24 Oct 2007 14:12:46 +0200, Fouff a écrit :
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(...)
C'est un idiome Python connu, qui fonctionne, et tout développeur Python sait (devrais savoir) que ça permet de concaténer simplement une séquence de chaînes de caractères.
par rapport à un buf = "/Title (", title, ")n" ?
Là tu crée un tuple, le f.write(buf) échouera: TypeError: argument 1 must be string or read-only character buffer, not tuple
Voire éventuellement en question subsidiaire par rapport à un bon vieux buf = "/Title (%s)n" % title ?
Perso, s'il n'y a qu'un titre à insérer dans une chaîne, je préfèrerais cette forme. Le "".join() est plus adapté lorsque tu constitue dynamiquement une séquence de chaînes.
Si quelqu'un à une réponse autre que 42 à me fournir, je lui en serais reconnaissant. Merci d'avance Fouff