4 votes

Pourquoi Python supporte-t-il le formatage des tuple et des dict en utilisant l'opérateur pourcentage dans un cas spécifique ?

Cette entrée :

'%s %(?)s' % {'?': 'a'}

donne lieu à cette sortie :

"{'?': 'a'} a"

qui remplace les caractères de remplacement à base de tuple et de dict dans la chaîne source par la valeur à laquelle vous vous attendriez si vous utilisiez l'un ou l'autre séparément.

Toutefois, si vous inversez le placement des caractères de remplacement dans la chaîne, vous obtenez une erreur de type (TypeError) :

In [2]: '%(?)s %s' % {'?': 'a'}
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-7989b5f88c97> in <module>()
----> 1 '%(?)s %s' % {'?': 'a'}

TypeError: not enough arguments for format

0voto

detourvmx Points 1

Chaque %s consomme une des variables après le symbole % autonome. Dans le premier cas, il y a deux variables, l'expression while et la correspondance du dictionnaire.

Dans le second cas, le premier %s prend le mappage du dictionnaire et consomme l'expression entière, l'a évalué. Cela laisse le second %s sans variable correspondante.

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