f-Strings sind verfügbar unter Python 3.6 und sehr nützlich zum Formatieren von Strings:
>>> n='you'
>>> f'hello {n}, how are you?'
'hello you, how are you?'
Lesen Sie mehr darüber in Python 3s f-Strings: Eine verbesserte Syntax zur Formatierung von Strings (Anleitung) . Ich habe ein interessantes Muster gefunden:
Beachten Sie, dass die Verwendung dreifacher Klammern dazu führt, dass Ihre Zeichenfolge nur einzelne Klammern enthält:
>>> f"{{{74}}}" '{74}'
Sie können jedoch mehr Zahnspangen anzeigen, wenn Sie mehr als dreifache Zahnspangen verwenden:
>>> f"{{{{74}}}}" '{{74}}'
Und genau das ist der Fall:
>>> f'{74}'
'74'
>>> f'{{74}}'
'{74}'
Wenn wir nun von zwei {
bis drei ist das Ergebnis das gleiche:
>>> f'{{{74}}}'
'{74}' # same as f'{{74}}' !
Wir brauchen also bis zu 4! ({{{{
) um zwei geschweifte Klammern als Ausgabe zu erhalten:
>>> f'{{{{74}}}}'
'{{74}}'
Warum ist das? Was passiert mit zwei geschweiften Klammern Python benötigt von diesem Moment an eine zusätzliche?
Doppelte Klammern entkommen den Klammern, so dass keine Interpolation stattfindet: {{
➝ {
, und }}
➝ }
. Und 74
bleibt eine unveränderte Zeichenfolge, '74'
.
Bei dreifachen Klammern werden die äußeren Doppelklammern wie oben ausgeblendet. Die inneren Klammern führen dagegen zu einer regelmäßigen String-Interpolation des Wertes 74
.
Das heißt, die Zeichenfolge f'{{{74}}}'
ist äquivalent zu f'{{ {74} }}'
, aber ohne Leerzeichen (oder gleichwertig mit '{' + f'{74}' + '}'
).
Sie können den Unterschied sehen, wenn Sie die numerische Konstante durch eine Variable ersetzen:
In [1]: x = 74
In [2]: f'{{x}}'
Out[2]: '{x}'
In [3]: f'{{{x}}}'
Out[3]: '{74}'