Dans Python, il semble y avoir deux façons différentes de générer une sortie formatée:
user = "Alex"
number = 38746
print("%s asked %d questions on stackoverflow.com" % (user, number))
print("{0} asked {1} questions on stackoverflow.com".format(user, number))
Y a-t-il un moyen d'être préféré à l'autre? Sont-ils équivalents, quelle est la différence? Quelle forme devrait être utilisée, en particulier pour Python3?
Utilisez la méthode format
, surtout si vous êtes préoccupé par Python 3 et les versions ultérieures. From la documentation :
Les opérations de formatage décrites ici sont modélisées sur la syntaxe de
printf()
de C. Ils ne prennent en charge que le formatage de certains types prédéfinis. L'utilisation d'un opérateur binaire signifie que des précautions peuvent être nécessaires pour formater correctement les n-uplets et les dictionnaires. Comme la nouvelle: ref:string-formatting
La syntaxe est plus flexible et gère les n-uplets et les dictionnaires naturellement, il est recommandé pour le nouveau code. Cependant, il n’est pas prévu de déprécier le formatage de styleprintf
-.
.format
a été introduit dans Python2.6
Si vous avez besoin d’une compatibilité ascendante avec les versions antérieures de Python, vous devez utiliser %
Pour Python3 et plus récent, vous devriez utiliser .format
pour sûr
.format
est plus puissant que %
. Portage %
à .format
est facile mais l’inverse peut être non trivial
Vous pouvez utiliser les deux. Aucun n'a dit que% l'expression de formatage est déconseillée. Cependant, comme indiqué précédemment, l'appel de la méthode de formatage est un peu plus puissant. Notez également que les expressions% sont un peu plus concises et plus faciles à coder. Essayez-les et voyez ce qui vous convient le mieux.
Les docs disent que la méthode format
est préférée pour le nouveau code. Il n'est toutefois pas prévu de supprimer% le formatage.