Python et les f-string
Posted on dim. 05 août 2018 in Développement
Présentation des f-string
Depuis la version 3.6, Python
a introduit les f-string, une forme de notation reprenant le principe de la fonction format
, mais en plus simple.
Ces f-string sont tout simplement des variables texte précédées de la lettre f
(ou F
, les deux fonctionnent), et permettent d’introduire des variables (texte, nombres…) dans une chaine de caractères, sans passer par les fonctions de substitution classiques.
>>> mavariable = 'f-string'
>>> print(f'Je suis une {mavariable}')
'Je suis une f-string'
Pas mal, non ? Si on avait voulu faire ça sans les f-string, il eut fallu saisir:
>>> print('Je suis une {}'.format(mavariable))
Un peu plus loin…
Avec des variables de classe
Là où ça devient intéressant, c’est qu’il est possible de faire des appels à des variables de classe. Jugez plutôt :
class People:
def __init__(self, name):
self.name = name
def presenter(self):
return f'Je suis {self.name}'
moi = People('Jerry')
print(moi.presenter())
Exécuter ce fichier vous donnera le résultat suivant : Je suis Jerry
.
Pour arriver à ce résultat avant l’introduction des f-string, il aurait fallu remplacer la fonction presenter
par:
def presenter(self):
return 'Je suis {}'.format(self.name)
Avec des fonctions
Allez, encore mieux, toujours en se basant sur la classe People
définie précédemment.
>>> print('Résultat de moi.presenter(): {moi.presenter()}')
'Résultat de moi.presenter(): Je suis Jerry'
Et si on ajoutait des paramètres à une fonction (que nous allons changer, pour l’occasion) ?
>>>def presenter(nom, fonction):
... return f'Je suis {nom}, profession : {fonction}'
...
>>>presenter('Jerry', 'Géologue')
'Je suis Jerry, profession : Géologue'
>>>print(f'Petite présentation : {presenter("Jerry", "Géologue")}')
'Petite présentation : Je suis Jerry, profession : Géologue
Les f-string accèptent, comme vous le voyez, des fonctions avec paramètres. Pensez bien à bien fermer les différentes parenthèses, accolades… et à faire attention aux différents guillemets que vous utilisez.
En conclusion
Les f-string ne changent pas la face du monde. Le formatage de chaînes existait déjà avant. Ceci-dit, utilisée correctement, cette fonctionnalité peut permettre une meilleure lisibilité du code.
>>>print('Bloc de volume {} m³, masse {} kg'.format(bloc.volume, bloc.masse())
'Bloc de volume 1 m³, masse 2500 kg'
# Voici qui est un peu plus lisible, non ?
>>>print('Bloc de volume {bloc.volume} m³, masse {bloc.masse()} kg')
'Bloc de volume 1 m³, masse 2500 kg'
Si votre projet doit reposer sur Python 3.6 au moins, n’hésitez pas à l’utiliser. Si vous devez garder une compatibilité avec d’anciennes versions de Python 3, là… Restez sur le bon vieux format
.