[Python] La chaîne de caractères f doit être utilisée pour incorporer la chaîne de caractères

La source

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.

Incorporation de chaînes Python

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.

Comment utiliser%

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.

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é.

Comment utiliser le format intégré ou str.format

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.

Comment utiliser la chaîne f

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.

Résumé

Recommended Posts

[Python] La chaîne de caractères f doit être utilisée pour incorporer la chaîne de caractères
33 chaînes à ne pas utiliser comme noms de variables en python
++ et-ne peuvent pas être utilisés pour incrémenter / décrémenter en python
[Python] Qui doit être utilisé, renvoyer ou renvoyer Aucun
J'ai créé un modèle de projet Python générique
La chaîne Python devient une chaîne f par défaut (peut-être)
Optimisation mathématique pour un travail gratuit avec Python + PuLP
Résumé des tableaux Python fréquemment utilisés (pour moi-même)
Astro: modules / fonctions python fréquemment utilisés pour l'analyse
30/10/2016 else pour Python3> pour:
python [pour moi]
[Python] Construire un environnement pour la programmation de compétition avec Atom (input () peut être utilisé!) [Mac]
Informations d'identification utilisées par Boto3 (AWS SDK for Python)
Remarque Python: lorsque la commande pip ne peut pas être utilisée
Pour pouvoir utiliser le japonais avec Python dans l'environnement Docker
Notes sur les connaissances Python utilisables avec AtCoder
[Mémorandum] Les clés japonaises ne peuvent pas être utilisées dans la chaîne de python.
compréhension de liste car operator.methodcaller ne peut pas être utilisé avec python 2.5
Operators ++, - ne peut pas être utilisé en python (différence de php)
Peut être utilisé chez les pros de la compétition! Bibliothèque standard Python
Python3> slice copy / slice notation> utilisé dans les instructions for, etc.
[Redash] La bibliothèque standard ne peut pas être utilisée dans la fonction python
Peut être utilisé avec AtCoder! Une collection de techniques pour dessiner du code court en Python!