Python f-strings of geformatteerde strings zijn de nieuwe manier om strings te formatteren. Deze functie werd geïntroduceerd in Python 3.6 onder PEP-498. Het wordt ook wel letterlijke stringinterpolatie genoemd.
Waarom hebben we f-strings nodig?
Python biedt verschillende manieren om een string te formatteren. Laten we ze snel bekijken en zien welke problemen ze hebben.
-
% formattering – geweldig voor eenvoudige opmaak maar beperkte ondersteuning voor strings, alleen ints, doubles. We kunnen het niet gebruiken met objecten.
-
Template Strings – het is erg basic. Template strings werken alleen met trefwoordargumenten zoals dictionary. We mogen geen functie aanroepen en argumenten moeten strings zijn.
-
Tekenreeksformaat() – De Python tekenreeks formaat()-functie werd geïntroduceerd om de problemen en beperkte functies van %-formattering en sjabloonreeksen te overwinnen. Het is echter te omslachtig. Laten we eens kijken naar de omslachtigheid met een eenvoudig voorbeeld.
>>> leeftijd = 4 * 10 >>> 'Mijn leeftijd is {leeftijd}.'.formaat(leeftijd=leeftijd) 'Mijn leeftijd is 40.'
Python f-strings werken bijna hetzelfde als de format() functie, maar verwijderen alle omslachtigheid die de format() functie heeft. Laten we zien hoe eenvoudig we de bovenstaande string kunnen opmaken met f-strings.
>>> f'My age is {age}'
'My age is 40.'
Python f-strings zijn geïntroduceerd om een minimale syntaxis te hebben voor tekenreeksopmaak. De expressies worden geëvalueerd tijdens runtime. Als je Python 3.6 of een nieuwere versie gebruikt, moet je f-strings gebruiken voor al je tekenreeksopmaakvereisten.
Voorbeelden van Python f-strings
Laten we eens kijken naar een eenvoudig voorbeeld van f-strings.
name = 'Pankaj'
age = 34
f_string = f'My Name is {name} and my age is {age}'
print(f_string)
print(F'My Name is {name} and my age is {age}') # f and F are same
name = 'David'
age = 40
# f_string is al geëvalueerd en zal nu niet meer veranderen
print(f_string)
Output:
My Name is Pankaj and my age is 34
My Name is Pankaj and my age is 34
My Name is Pankaj and my age is 34
Python voert statements één voor één uit en zodra f-string expressies zijn geëvalueerd, veranderen ze niet meer, zelfs niet als de expressiewaarde verandert. Daarom blijft in de bovenstaande codefragmenten de waarde van f_string hetzelfde, zelfs nadat de variabelen ‘naam’ en ‘leeftijd’ zijn veranderd in het latere deel van het programma.
1. f-strings met expressies en conversies
We kunnen f-strings gebruiken om een datetime naar een specifiek formaat om te zetten. We kunnen ook wiskundige expressies uitvoeren in f-strings.
from datetime import datetime
name = 'David'
age = 40
d = datetime.now()
print(f'Age after five years will be {age+5}') # age = 40
print(f'Name with quotes = {name!r}') # name = David
print(f'Default Formatted Date = {d}')
print(f'Custom Formatted Date = {d:%m/%d/%Y}')
Output:
Age after five years will be 45
Name with quotes = 'David'
Default Formatted Date = 2018-10-10 11:47:12.818831
Custom Formatted Date = 10/10/2018
2. f-strings ondersteunen raw strings
We kunnen ook raw strings maken met behulp van f-strings.
print(f'Default Formatted Date:\n{d}')
print(fr'Default Formatted Date:\n {d}')
Output:
Default Formatted Date:
2018-10-10 11:47:12.818831
Default Formatted Date:\n 2018-10-10 11:47:12.818831
3. f-strings met objecten en attributen
We kunnen ook objectattributen benaderen in f-strings.
class Employee:
id = 0
name = ''
def __init__(self, i, n):
self.id = i
self.name = n
def __str__(self):
return f'E[id={self.id}, name={self.name}]'
emp = Employee(10, 'Pankaj')
print(emp)
print(f'Employee: {emp}\nName is {emp.name} and id is {emp.id}')
Uitvoer:
E[id=10, name=Pankaj]
Employee: E[id=10, name=Pankaj]
Name is Pankaj and id is 10
4. f-strings die functies aanroepen
We kunnen ook functies aanroepen bij f-strings opmaak.
def add(x, y):
return x + y
print(f'Sum(10,20) = {add(10, 20)}')
Uitvoer: Sum(10,20) = 30
5. f-string met spaties
Als er voorloop- of achterloopspaties zijn in de expressie, worden deze genegeerd. Als het letterlijke stringgedeelte spaties bevat, worden deze behouden.
>>> age = 4 * 20
>>> f' Age = { age } '
' Age = 80 '
6. Lambda-uitdrukkingen met f-strings
We kunnen ook lambda-uitdrukkingen gebruiken binnen f-string expressies.
x = -20.45
print(f'Lambda Example: {(lambda x: abs(x)) (x)}')
print(f'Lambda Square Example: {(lambda x: pow(x, 2)) (5)}')
Uitvoer:
Lambda Example: 20.45
Lambda Square Example: 25
7. f-strings diverse voorbeelden
Laten we eens kijken naar enkele diverse voorbeelden van Python f-strings.
print(f'{"quoted string"}')
print(f'{{ {4*10} }}')
print(f'{{{4*10}}}')
Uitvoer:
quoted string
{ 40 }
{40}
Dat is alles voor opgemaakte strings in Python, ook bekend als f-strings.
U kunt de volledige Python-script en meer Python-voorbeelden bekijken op onze GitHub-opslagplaats.
Referentie: PEP-498, Officiële documentatie
Source:
https://www.digitalocean.com/community/tutorials/python-f-strings-literal-string-interpolation