« Python : fstrings » : différence entre les versions
(Page créée avec « =Le formatage de string, méthode Python3= https://realpython.com/python-f-strings/ On peut désormais se débarrasser des anciennes syntaxes : <nowiki> print("{}".form... ») |
Aucun résumé des modifications |
||
Ligne 7 : | Ligne 7 : | ||
print("{}".format(var)) | print("{}".format(var)) | ||
print("%s"%var) | print("%s"%var) | ||
</nowiki> | |||
On peut appeller des fonctions : | |||
<nowiki> | |||
>>> def texter(): | |||
... return "This is a sample text" | |||
... | |||
>>> print(f"{texter()}") | |||
This is a sample text | |||
</nowiki> | |||
... ainsi que des expressions logiques : | |||
<nowiki> | |||
>>> def texter(): | |||
... return "This is a sample text" | |||
... | |||
>>> print(f"{texter()}") | |||
This is a sample text | |||
</nowiki> | |||
...voire séparer un print sur plusieurs lignes (ne pas oublier le f devant chaque expression): | |||
<nowiki> | |||
>>> print(f"First " | |||
... f"Second " | |||
... f"Third") | |||
First Second Third | |||
</nowiki> | |||
...ou même écrire sur plusieurs lignes: | |||
<nowiki> | |||
>>> print(f""" | |||
... Les sanglots longs | |||
... Des violons | |||
... De l'automne""" | |||
... | |||
... ) | |||
Les sanglots longs | |||
Des violons | |||
De l'automne | |||
</nowiki> | |||
==Quelques détails== | |||
===Quotes=== | |||
Tous les types de quotes fonctionnent de façon normale : | |||
<nowiki> | |||
>>> print(f"hello") | |||
hello | |||
>>> print(f'Hi') | |||
Hi | |||
>>> print(f'''Ahoy''') | |||
Ahoy | |||
</nowiki> | |||
===Dictionnaires=== | |||
Attention avec les dictionnaires : il vaut mieux garder l'habitude d'écrire les dictionnaires en simples quotes, les strings en double : | |||
<nowiki> | |||
>>> comedian = {'name': 'Eric Idle', 'age': 74} | |||
>>> f"The comedian is {comedian['name']}, aged {comedian['age']}." | |||
The comedian is Eric Idle, aged 74. | |||
</nowiki> | |||
Cela fonctionne. | |||
Cependant : | |||
<nowiki> | |||
>>> comedian = {'name': 'Eric Idle', 'age': 74} | |||
>>> f'The comedian is {comedian['name']}, aged {comedian['age']}.' | |||
File "<stdin>", line 1 | |||
f'The comedian is {comedian['name']}, aged {comedian['age']}.' | |||
^ | |||
SyntaxError: invalid syntax | |||
</nowiki> | |||
Renvoie une erreur. Les simples quotes du dictionnaire viennent refermer celles de la chaîne de caractères. | |||
===Accolades=== | |||
Pour faire apparaître une accolade, il faut la doubler : | |||
<nowiki> | |||
>>> f"{{74}}" | |||
'{74}' | |||
>>> f"{{{74}}}" | |||
'{74}' | |||
>>> f"{{{{74}}}}" | |||
'{{74}}' | |||
</nowiki> | |||
===Backslash & commentaires=== | |||
On peut utiliser des backslashs pour échapper une partie de la chaîne, mais on ne peut les utiliser dans l'expression logique en elle-même : | |||
<nowiki> | |||
>>> f"{\"Eric Idle\"}" | |||
File "<stdin>", line 1 | |||
f"{\"Eric Idle\"}" | |||
^ | |||
SyntaxError: f-string expression part cannot include a backslash | |||
</nowiki> | |||
De la même façon, attention aux commentaires dans les expressions : | |||
<nowiki> | |||
>>> f"Eric is {2 * 37 #Oh my!}." | |||
File "<stdin>", line 1 | |||
f"Eric is {2 * 37 #Oh my!}." | |||
^ | |||
SyntaxError: f-string expression part cannot include '#' | |||
</nowiki> | </nowiki> |
Version du 4 août 2019 à 15:55
Le formatage de string, méthode Python3
https://realpython.com/python-f-strings/
On peut désormais se débarrasser des anciennes syntaxes :
print("{}".format(var)) print("%s"%var)
On peut appeller des fonctions :
>>> def texter(): ... return "This is a sample text" ... >>> print(f"{texter()}") This is a sample text
... ainsi que des expressions logiques :
>>> def texter(): ... return "This is a sample text" ... >>> print(f"{texter()}") This is a sample text
...voire séparer un print sur plusieurs lignes (ne pas oublier le f devant chaque expression):
>>> print(f"First " ... f"Second " ... f"Third") First Second Third
...ou même écrire sur plusieurs lignes:
>>> print(f""" ... Les sanglots longs ... Des violons ... De l'automne""" ... ... ) Les sanglots longs Des violons De l'automne
Quelques détails
Quotes
Tous les types de quotes fonctionnent de façon normale :
>>> print(f"hello") hello >>> print(f'Hi') Hi >>> print(f'''Ahoy''') Ahoy
Dictionnaires
Attention avec les dictionnaires : il vaut mieux garder l'habitude d'écrire les dictionnaires en simples quotes, les strings en double :
>>> comedian = {'name': 'Eric Idle', 'age': 74} >>> f"The comedian is {comedian['name']}, aged {comedian['age']}." The comedian is Eric Idle, aged 74.
Cela fonctionne.
Cependant :
>>> comedian = {'name': 'Eric Idle', 'age': 74} >>> f'The comedian is {comedian['name']}, aged {comedian['age']}.' File "<stdin>", line 1 f'The comedian is {comedian['name']}, aged {comedian['age']}.' ^ SyntaxError: invalid syntax
Renvoie une erreur. Les simples quotes du dictionnaire viennent refermer celles de la chaîne de caractères.
Accolades
Pour faire apparaître une accolade, il faut la doubler :
>>> f"{{74}}" '{74}' >>> f"{{{74}}}" '{74}' >>> f"{{{{74}}}}" '{{74}}'
Backslash & commentaires
On peut utiliser des backslashs pour échapper une partie de la chaîne, mais on ne peut les utiliser dans l'expression logique en elle-même :
>>> f"{\"Eric Idle\"}" File "<stdin>", line 1 f"{\"Eric Idle\"}" ^ SyntaxError: f-string expression part cannot include a backslash
De la même façon, attention aux commentaires dans les expressions :
>>> f"Eric is {2 * 37 #Oh my!}." File "<stdin>", line 1 f"Eric is {2 * 37 #Oh my!}." ^ SyntaxError: f-string expression part cannot include '#'