161 votes

Quand faut-il utiliser %r au lieu de %s en Python ?

Sur Python Learn the Hard Way page 21, je vois cet exemple de code :

Pourquoi est utilisé ici au lieu de ? Quand vous utilisez , et quand vous utilisez le ?

308voto

Ben James Points 41165

L' %s spécificateur convertit l'objet à l'aide d' str(), et %r convertit à l'aide de repr().

Pour certains objets, tels que les entiers, ils donnent le même résultat, mais repr() est particulier en ce qu' (pour les types où cela est possible) de façon conventionnelle renvoie un résultat valide la syntaxe de Python, qui pourrait être utilisé sans ambiguïté recréer l'objet qu'il représente.

Voici un exemple, à l'aide d'une date:

>>> import datetime
>>> d = datetime.date.today()
>>> str(d)
'2011-05-14'
>>> repr(d)
'datetime.date(2011, 5, 14)'

Types pour qui repr() ne produit pas la syntaxe de Python comprennent ceux qui pointent vers des ressources externes, comme un file, ce qui vous ne pouvez pas garantir à recréer dans un contexte différent.

15voto

manojlds Points 96599

``montre avec les guillemets :

Ce sera comme :

Si vous aviez utilisé `` il aurait été :

15voto

Pramod Bhat Points 41

Utiliser l' %r pour le débogage, car il affiche les données "brutes" de la variable, mais les autres sont utilisés pour l'affichage des utilisateurs.

C'est combien de %r mise en forme des œuvres; qu'il imprime la façon dont vous l'avez écrit (ou presque). C'est le format "raw" pour le débogage. Ici, \n utilisé pour afficher les utilisateurs qui ne fonctionne pas. %r montre la représentation si les données brutes de la variable.

months = "\nJan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug"
print "Here are the months: %r" % months

Sortie:

Here are the months: '\nJan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug'

Vérifiez cet exemple d'Apprendre le langage Python à la Dure.

14voto

macloo Points 139

Il s’agit d’une version de la réponse de Ben James, ci-dessus :

Quand j’ai couru, il m’a aidé à voir l’utilité de r %.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X