Cet article a été compilé en lisant le point 4: "** Incorporation dans une chaîne f sans utiliser la chaîne de format C-style et str.format " dans " Effective Python 2nd Edition **". Chose.
Il existe trois méthodes principales pour incorporer des chaînes de caractères dans Python.
--Comment utiliser% --Comment utiliser str.format () --Comment utiliser la chaîne f
Je l'ai utilisé sans grande conscience, mais j'aimerais profiter de cette occasion pour réfléchir à celui qui convient.
C'est une méthode familière à ceux qui utilisent le langage Java ou C. Écrivez comme suit.
name = 'Bol de boeuf au fromage Taro'
age = 21
print('mon nom est%s.%J'ai d ans.' % (name, age))
production
Je m'appelle Cheese Beef Bowl Taro. J'ai 21 ans.
Ouaip. Cela semble bon. Mais en fait, il y a quelques problèmes avec cette méthode. Regardons l'exemple suivant.
name = 'Bol de boeuf au fromage Taro'
age = 21
weight = 55.1525
print('mon nom est%s.%J'ai d ans. Le poids est d'environ%C'est dkg. À partir de maintenant%Ravi de vous rencontrer.' % (name, age, int(weight), name))
production
Je m'appelle Cheese Beef Bowl Taro. J'ai 21 ans. Il pèse environ 55 kg. Merci pour votre soutien continu au Cheese Beef Bowl Taro.
Le code ci-dessus présente les quatre problèmes suivants.
Par exemple, si vous inversez le premier name
et ʻage` dans le code ci-dessus, vous obtiendrez l'erreur suivante:
Traceback (most recent call last):
File "cheese.py", line 8, in <module>
print('mon nom est%s.%J'ai d ans. Le poids est d'environ%C'est dkg. À partir de maintenant%Ravi de vous rencontrer.' % (age, name, int(weight), name))
TypeError: %d format: a number is required, not str
Le premier type est un entier et le second est un type de chaîne de caractères, il est donc inutile si vous l'inversez. Vous devez toujours faire attention au type et à l'ordre.
Dans le cas ci-dessus, «poids» est converti en un entier, mais plus la formule à attribuer est compliquée, moins elle devient lisible. "Quelle variable correspond à quelle?" Vous devez regarder attentivement.
** Problème 3: besoin d'écrire plusieurs fois lorsque vous utilisez la même valeur ** Dans l'exemple ci-dessus, la même variable appelée «nom» est utilisée deux fois, mais il est nécessaire de l'écrire deux fois dans le taple sur le côté droit.
** Problème 4: l'utilisation d'un dictionnaire le rend redondant **
Les problèmes 1 et 3 peuvent être résolus en utilisant un dictionnaire au lieu d'un taple. Vous pouvez écrire comme suit.
name = 'Bol de boeuf au fromage Taro'
age = 21
weight = 55.1525
print('mon nom est%(name)s.%(age)J'ai d ans. Le poids est d'environ%(weight)C'est dkg. À partir de maintenant%(name)Ravi de vous rencontrer.' % {'age':age, 'name':name, 'weight':int(weight)})
La sortie est la même. Si vous l'écrivez ainsi, vous n'avez qu'à écrire le nom qui apparaît deux fois et vous n'avez pas à vous soucier de l'ordre des variables. Cependant, l'utilisation du dictionnaire le rendait encore plus redondant et compliqué.
Ensuite, voyons comment utiliser str.format ()
.
name = 'Bol de boeuf au fromage Taro'
age = 21
print('mon nom est{}est.{}歳est.'.format(name, age))
Écrivez comme ça. Vous pouvez également modifier l'ordre des variables en définissant l'index comme indiqué ci-dessous.
print('mon nom est{1}est.{0}歳est.'.format(age, name))
Appliquez à l'exemple précédent.
name = 'Bol de boeuf au fromage Taro'
age = 21
weight = 55.1525
print('mon nom est{0}est.{1}歳est.体重はだいたい{2}kgest.これからも{0}Ravi de vous rencontrer.'.format(age, name, int(weight)))
Il semble que les problèmes 1 et 3 ci-dessus peuvent être résolus en utilisant index. Cependant, bien qu'elle soit plus propre que la méthode utilisant un dictionnaire avec «%», elle est toujours redondante.
Enfin, considérez la méthode utilisant la chaîne de caractères f. Écrivez comme ça.
name = 'Bol de boeuf au fromage Taro'
age = 21
weight = 55.1525
print(f'mon nom est{name}est.{age}歳est.')
Appliquer à l'exemple précédent
name = 'Bol de boeuf au fromage Taro'
age = 21
weight = 55.1525
print(f'mon nom est{name}est.{age}歳est.体重はだいたい{int(weight)}kgest.これからも{name}Ravi de vous rencontrer.')
Vous pouvez voir qu'elle est beaucoup plus propre que la méthode utilisant %
et str.format ()
.
Il est hautement lisible car il est intégré directement au lieu de spécifier la variable sur le côté droit avec un taple, un dictionnaire ou format ()
.
Peu importe le code que vous utilisez, mais plus il est complexe, mieux il est d'utiliser la chaîne f.
str.format ()
ne peut être utilisé qu'avec Python2.6
et que la chaîne de caractères f doit être Python3.6
ou plus.Recommended Posts