Python f-Strings - PEP 498 - Literale Zeichenfolgeninterpolation
Python f-Strings oder formatierte Strings sind die neue Art, Strings zu formatieren. Dieses Feature wurde in Python 3.6 unter PEP-498 eingeführt. Es wird auch literal string interpolation genannt.
Warum brauchen wir f-Strings?
Python bietet verschiedene Möglichkeiten, einen String zu formatieren. Lassen Sie uns schnell einen Blick darauf werfen und welche Probleme sie haben.
% Formatierung - großartig für einfache Formatierungen, aber begrenzte Unterstützung nur für Strings, Ints, Doubles. Wir können es nicht mit Objekten verwenden.
Vorlagenstrings - es ist sehr grundlegend. Vorlagenstrings funktionieren mit Schlüsselwortargumenten wie ein Wörterbuch, nur. Wir dürfen keine Funktionen aufrufen und die Argumente müssen Zeichenfolgen sein.
-
String format() - Die Python-Stringformat() -Funktion wurde eingeführt, um die Probleme und begrenzten Funktionen der %-Formatierung und der Template-Strings zu überwinden. Allerdings ist sie zu umfangreich. Lassen Sie uns ihre Umfang mit einem einfachen Beispiel betrachten.
>>> age = 4 * 10 >>> 'My age is {age}.'.format(age=age) 'My age is 40.'
Python f-strings funktionieren fast ähnlich wie die format()-Funktion, entfernen jedoch jegliche Verbosität, die die format()-Funktion hat. Lassen Sie uns sehen, wie einfach wir den obigen String 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 Formatierung von Zeichenfolgen 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 Anforderungen an die Zeichenfolgenformatierung verwenden.
Beispiele für Python f-Strings
Lass uns ein einfaches Beispiel für f-strings ansehen.
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 already evaluated and won't change now
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 werden, ändern sie sich nicht, selbst wenn sich der Ausdruckswert ändert. Deshalb bleibt im obigen Code-Snippet der f_string-Wert gleich, selbst nachdem sich die Variablen 'name' und 'age' im späteren Teil des Programms geändert haben.
1. f-Strings mit Ausdrücken und Konvertierungen
Wir können f-Strings verwenden, um Datetime 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 rohe Zeichenfolgen
Wir können auch rohe Zeichenfolgen 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
Wir können auch auf Objektattribute in f-Strings zugreifen.
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
Wir können auch Funktionen in der Formatierung von f-Strings aufrufen.
def add(x, y):
return x + y
print(f'Sum(10,20) = {add(10, 20)}')
Ausgabe: Summe(10,20)=30
5. f-String mit Leerzeichen
Wenn es führende oder nachfolgende Leerzeichen im Ausdruck gibt, werden diese ignoriert. Wenn der literal String-Teil Leerzeichen enthält, werden diese beibehalten.
>>> age = 4 * 20
>>> f' Age = { age } '
' Age = 80 '
6. Lambda-Ausdrücke mit f-Strings
Wir können auch Lambda-Ausdrücke innerhalb von f-String-Ausdrücken verwenden.
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-Strings verschiedene Beispiele
Lass uns einige verschiedene Beispiele für Python-f-Strings ansehen.
print(f'{"quoted string"}')
print(f'{{ {4*10} }}')
print(f'{{{4*10}}}')
Ausgabe :
quoted string
{ 40 }
{40}
Das ist alles zu Python formatierten Strings, auch bekannt als f-Strings.
Sie können das vollständige Python-Skript und weitere Python-Beispiele aus unserem GitHub-Repository abrufen.
Referenz: PEP-498, Offizielle Dokumentation
