web-dev-qa-db-fra.com

Python 3: utilisation de% s et .format ()

J'ai finalement basculé de % Vers l'opérateur de formatage de chaîne .format() dans mon code 2.x afin de faciliter la migration vers 3.x à l'avenir. Il était un peu surprenant de découvrir que non seulement le formatage de style % Reste dans Py3, mais qu'il est largement utilisé dans le code de bibliothèque standard. Cela semble logique, car écrire '(%s)' % variable est un peu plus court et peut-être plus facile à comprendre que '({})'.format(variable). Mais je doute toujours. Est-il approprié (pythonique?) D'utiliser les deux approches dans le code? Je vous remercie.

24
Zaur Nasibov

La documentation de Python 3.2 indique que % Finira par disparaître.

http://docs.python.org/3.2/tutorial/inputoutput.html#old-string-formatting

Comme str.format() est assez nouveau, beaucoup de code Python utilise toujours l'opérateur %. Cependant, parce que cet ancien style de formatage sera finalement supprimé de la langue, str.format() doit généralement être utilisée.

Mais comme @ regilero dit , la phrase est passée de 3,3 , ce qui pourrait suggérer que ce n'est pas vraiment le cas. Il y a quelques conversations ici qui suggèrent la même chose.

Depuis Python 3.4 le paragraphe 7.1.1 se lit comme suit:

L'opérateur% peut également être utilisé pour le formatage de chaînes. Il interprète l'argument de gauche un peu comme une chaîne de format de style sprintf () à appliquer à l'argument de droite, et renvoie la chaîne résultant de cette opération de formatage.

Voir aussi Python 3.4 4.7.2 Formatage de chaînes de style printf.

24
Vlad