Python f-strings – PEP 498 – Literale Zeichenketteninterpolation

Python f-Strings oder formatierte Zeichenketten sind die neue Art, Zeichenketten zu formatieren. Diese Funktion wurde in Python 3.6 unter PEP-498 eingeführt. Sie wird auch als literale Zeichenketteninterpolation bezeichnet.

Warum brauchen wir f-Strings?

Python bietet verschiedene Möglichkeiten, eine Zeichenkette zu formatieren. Schauen wir uns diese schnell an und welche Probleme sie haben.

  • %-Formatierung – gut für einfache Formatierungen, aber nur begrenzte Unterstützung für Zeichenketten, Ganzzahlen und Fließkommazahlen. Wir können sie nicht mit Objekten verwenden.

  • Template-Zeichenketten – sehr grundlegend. Template-Zeichenketten arbeiten nur mit Schlüsselwortargumenten wie einem Wörterbuch. Wir dürfen keine Funktion aufrufen und die Argumente müssen Zeichenketten sein.

  • String format() – Die Python String format()-Funktion wurde eingeführt, um die Probleme und eingeschränkten Funktionen der %-Formatierung und Vorlagenzeichenfolgen zu überwinden. Allerdings ist sie zu umfangreich. Schauen wir uns ihre Umfangreicheit an einem einfachen Beispiel an.

    >>> alter = 4 * 10
    >>> 'Mein Alter ist {alter}.'.format(alter=alter)
    'Mein Alter ist 40.'
    

Python f-strings funktioniert fast genauso wie die format() Funktion, entfernt jedoch alle Umfangreichenheiten, die die format() Funktion aufweist. Schauen wir uns an, wie einfach wir die obige Zeichenfolge mit f-strings formatieren können.

>>> f'My age is {age}'
'My age is 40.'

Python f-strings wurden eingeführt, um eine minimale Syntax für die Zeichenfolgenformatierung zu haben. Die Ausdrücke werden zur Laufzeit ausgewertet. Wenn Sie Python 3.6 oder eine höhere Version verwenden, sollten Sie f-strings für alle Ihre Zeichenfolgenformatierungsanforderungen verwenden.

Beispiele für f-Strings in Python

Werfen wir einen Blick auf ein einfaches Beispiel für 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 wird bereits ausgewertet und ändert sich jetzt nicht mehr
print(f_string)

Ausgabe:

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 führt Anweisungen nacheinander aus, und sobald f-String-Ausdrücke ausgewertet sind, ändern sie sich auch dann nicht, wenn sich der Ausdruckswert ändert. Deshalb bleibt im obigen Code-Schnipsel der f-String-Wert selbst dann gleich, wenn sich die Variablen ‚Name‘ und ‚Alter‘ im späteren Teil des Programms ändern.

1. f-Strings mit Ausdrücken und Konvertierungen

Wir können f-Strings verwenden, um Datum/Zeit in ein bestimmtes Format zu konvertieren. Wir können auch mathematische Ausdrücke in f-Strings ausführen.

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}')

Ausgabe:

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 unterstützen Rohstrings

Wir können auch Rohstrings mit f-Strings erstellen.

print(f'Default Formatted Date:\n{d}')
print(fr'Default Formatted Date:\n {d}')

Ausgabe:

Default Formatted Date:
2018-10-10 11:47:12.818831
Default Formatted Date:\n 2018-10-10 11:47:12.818831

3. f-Strings mit Objekten und Attributen

Objektattribute können ebenfalls in f-Strings abgerufen werden.

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}')

Ausgabe:

E[id=10, name=Pankaj]
Employee: E[id=10, name=Pankaj]
Name is Pankaj and id is 10

4. f-Strings, die Funktionen aufrufen

Auch Funktionen können in f-Strings-Formatierungen aufgerufen werden.

def add(x, y):
    return x + y


print(f'Sum(10,20) = {add(10, 20)}')

Ausgabe: Sum(10,20) = 30

5. f-String mit Leerzeichen

Führende oder abschließende Leerzeichen im Ausdruck werden ignoriert. Enthält der literale Zeichenketten-Teil Leerzeichen, werden sie beibehalten.

>>> age = 4 * 20
>>> f'   Age = {  age   }  '
'   Age = 80  '

6. Lambda-Ausdrücke mit f-Strings

Auch Lambda-Ausdrücke können in f-String-Ausdrücken verwendet werden.

x = -20.45
print(f'Lambda Example: {(lambda x: abs(x)) (x)}')

print(f'Lambda Square Example: {(lambda x: pow(x, 2)) (5)}')

Ausgabe:

Lambda Example: 20.45
Lambda Square Example: 25

7. F-String-Beispiele

Lassen Sie uns einige verschiedene Beispiele für Python f-Strings betrachten.

print(f'{"quoted string"}')
print(f'{{ {4*10} }}')
print(f'{{{4*10}}}')

Ausgabe:

quoted string
{ 40 }
{40}

Das war alles für Python formatierte Zeichenketten, auch bekannt als f-Strings.

Sie können das komplette Python-Skript und weitere Python-Beispiele in unserem GitHub-Repository überprüfen.

Referenz: PEP-498, Offizielle Dokumentation

Source:
https://www.digitalocean.com/community/tutorials/python-f-strings-literal-string-interpolation