Il existe deux approches qui ne sont pas mentionnés ci-dessus, mais qui résoudre le problème d'une manière qui est conforme à la PEP 8 et vous permettent de faire un meilleur usage de votre espace. Ils sont les suivants:
msg = (
'This message is so long, that it requires '
'more than ' + str(x) + 'lines.' + 2*'\n'
'and you may want to add more.'
)
print(msg)
Remarquez comment les parenthèses sont utilisées pour nous permettre de ne pas ajouter plus de signes entre la pure chaînes, et de diffuser le résultat sur plusieurs lignes sans le besoin explicite de continuation de ligne '\' (laid et lourd).
Les avantages sont les mêmes avec ce qui est décrit ci-dessous, la différence est que vous pouvez le faire n'importe où.
Par rapport à la précédente alternative, c'est mieux visuellement lors de l'inspection du code, car il décrit le début et la fin de l' msg
clairement (à comparer avec msg +=
une à chaque ligne, ce qui nécessite une réflexion complémentaire étape de déduire que ces lignes à ajouter à la même chaîne - et que si vous faites une faute de frappe, en oubliant un +
sur une ligne aléatoire ?).
Au sujet de cette approche, de nombreuses fois nous avons à construire une chaîne de caractères à l'aide d'itérations et des contrôles au sein de l'itération corps, de sorte que l'ajout de ses pièces à l'intérieur de l'appel de la fonction, comme indiqué plus loin, n'est pas une option.
Un proche alternative est la suivante:
msg = 'This message is so long, that it requires '
msg += 'many lines to write, one reason for that\n'
msg += 'is that it contains numbers, like this '
msg += 'one: ' + str(x) +', which take up more space\n'
msg += 'to insert. Note how newlines are also included '
msg += 'and can be better presented in the code itself.'
print(msg)
Si la première est préférable.
L'autre approche est, comme les précédents, si elle commence le message sur la ligne en dessous de la print
.
La raison pour cela est de gagner de l'espace sur la gauche, sinon l' print(
"pousse" vous vers la droite. Cette consommation de l'indentation est hérité par le reste des lignes comprenant le message, parce que, selon la PEP 8 ils doivent s'aligner avec l'ouverture de la parenthèse de l' print
- dessus d'eux. Donc, si votre message est déjà longue, de cette façon, il est forcé de s'étaler sur encore plus de lignes.
Contraste:
raise TypeError('aaaaaaaaaaaaaaaa' +
'aaaaaaaaaaaaaaaa' +
'aaaaaaaaaaaaaaaa')
avec cette (suggéré ici):
raise TypeError(
'aaaaaaaaaaaaaaaaaaaaaaaa' +
'aaaaaaaaaaaaaaaaaaaaaaaa'
)
La ligne de propagation a été réduite. Bien sûr, cette dernière approche ne s'applique pas tellement d' print
, parce que c'est un court appel. Mais il s'applique à des exceptions.
Une variation, vous pouvez avoir est la suivante:
raise TypeError(
'aaaaaaaaaaaaaaaaaaaaaaaa'
'aaaaaaaaaaaaaaaaaaaaaaaa'
'aaaaa' + str(x) + 'aaaaa'
)
Remarquez comment vous vous n'avez pas besoin d'avoir des signes plus pure entre les chaînes.