Python f-Strings Magic: 5 bahnbrechende Tricks, die jeder Programmierer kennen muss


Lassen Sie uns einige der weniger bekannten, aber äußerst hilfreichen Verwendungsmöglichkeiten von Python-F-Strings beim Debuggen, Formatieren von Datumsangaben und LLM-Eingabeaufforderungsvorlagen und mehr erkunden.

Wenn Sie Python schon länger verwenden, verwenden Sie wahrscheinlich nicht mehr die altmodische Methode format() zum Formatieren von Zeichenfolgen. Und wechselte zu den prägnanteren und einfacher zu wartenden f-Strings, die in Python 3.6 eingeführt wurden. Aber es gibt noch mehr.

Seit Python 3.8 gibt es einige praktische F-String-Funktionen, die Sie zum Debuggen, Formatieren von Datetime-Objekten und Gleitkommazahlen und vielem mehr verwenden können. Wir werden diese Anwendungsfälle in diesem Tutorial untersuchen. 

Hinweis: Um die Codebeispiele ausführen zu können, muss Python 3.8 oder eine neuere Version installiert sein.

1. Einfacheres Debuggen 

Beim Codieren können Sie print()-Anweisungen verwenden, um Variablen auszudrucken und zu überprüfen, ob ihre Werte Ihren Erwartungen entsprechen. Mit F-Strings können Sie Variablennamen und ihrer Werte einschließen, um das Debuggen zu erleichtern.

Betrachten Sie das folgende Beispiel:

length = 4.5
breadth = 7.5
height = 9.0

print(f'{length=}, {breadth=}, {height=}')

Dies gibt aus:

Output >>> length=4.5, breadth=7.5, height=9.0

Diese Funktion ist besonders hilfreich, wenn Sie den Status Ihrer Variablen während des Debuggens verstehen möchten. Für Produktionscode sollten Sie jedoch die Protokollierung mit den erforderlichen Protokollstufen einrichten.

2. Hübsche Formatierung von Gleitkommazahlen und Datumsangaben 

Wenn Sie Gleitkommazahlen und Datetime-Objekte in Python ausdrucken, müssen Sie Folgendes tun:

  • Formatieren Sie Gleitkommazahlen so, dass sie eine feste Anzahl von Nachkommastellen enthalten

  • Formatieren Sie Datumsangaben in einem bestimmten konsistenten Format

F-Strings bieten eine einfache Möglichkeit, Floats und Datumsangaben entsprechend Ihren Anforderungen zu formatieren.

In diesem Beispiel formatieren Sie die Variable price so, dass zwei Stellen nach dem Dezimalpunkt angezeigt werden, indem Sie {price:.2f wie folgt angeben:

price = 1299.500
print(f'Price: ${price:.2f}')
Output >>> Price: $1299.50

Sie hätten die Methode strftime() verwendet, um Datetime-Objekte in Python zu formatieren. Man kann es aber auch mit F-Saiten machen. Hier ist ein Beispiel:

from datetime import datetime
current_time = datetime.now()
print(f'Current date and time: {current_time:%Y-%m-%d %H:%M:%S}')
Output >>> Current date and time: 2023-10-12 15:25:08

Lassen Sie uns ein einfaches Beispiel codieren, das sowohl Datums- als auch Float-Formatierung enthält:

price = 1299.500
purchase_date = datetime(2023, 10, 12, 15, 30)
print(f'Product purchased for ${price:.2f} on {purchase_date:%B %d, %Y at %H:%M}')
Output >>>
Product purchased for $1299.50 on October 12, 2023 at 15:30

3. Basisumrechnungen in numerische Werte 

F-Strings unterstützen die Basiskonvertierung für numerische Datentypen, sodass Sie Zahlen von einer Basis in eine andere konvertieren können. Sie müssen also keine separaten Basiskonvertierungsfunktionen oder Lambdas schreiben, um die Zahl in einer anderen Basis anzuzeigen.

Um die binären und hexadezimalen Äquivalente der Dezimalzahl 42 auszudrucken, können Sie f-string wie gezeigt verwenden:

num = 42
print(f'Decimal {num}, in binary: {num:b}, in hexadecimal: {num:x}')
Output >>>
Decimal 42, in binary: 101010, in hexadecimal: 2a

Wie Sie sehen, ist dies hilfreich, wenn Sie Zahlen in unterschiedlichen Basen ausdrucken müssen, beispielsweise binär oder hexadezimal. Nehmen wir ein weiteres Beispiel für die Konvertierung von Dezimalzahlen in Oktalzahlen:

num = 25
print(f'Decimal {num}, in octal: {num:o}')
Output >>> Decimal 25, in octal: 31

Erinnern Sie sich an den 31. Okt.=25. Dez.? Ja, dieses Beispiel ist inspiriert von „Warum verwechseln Entwickler Halloween mit Weihnachten?“ ” Memes.

4. Nützliche ASCII- und Repr-Konvertierungen

Sie können die Konvertierungsflags !a und !r innerhalb von F-Strings verwenden, um Strings als ASCII- bzw. repr-Strings zu formatieren.

Manchmal müssen Sie möglicherweise eine Zeichenfolge in ihre ASCII-Notation konvertieren. So können Sie es mit der Flagge !a machen:

emoji = "🙂" 
print(f'ASCII representation of Emoji: {emoji!a}')
Output >>>
ASCII representation of Emoji: '\U0001f642'

Um auf den repr eines beliebigen Objekts zuzugreifen, können Sie F-Strings mit dem Flag !r verwenden:

from dataclasses import dataclass

@dataclass
class Point3D:
	x: float = 0.0
	y: float = 0.0
	z: float = 0.0

point = Point3D(0.5, 2.5, 1.5)
print(f'Repr of 3D Point: {point!r}')

Python-Datenklassen werden mit der Standardimplementierung von __repr__ geliefert, sodass wir nicht explizit eine schreiben müssen.

Output >>>
Repr of 3D Point: Point3D(x=0.5, y=2.5, z=1.5)

5. Formatieren von LLM-Eingabeaufforderungsvorlagen

Bei der Arbeit mit großen Sprachmodellen wie Llama und GPT-4 sind F-Strings hilfreich beim Erstellen von Eingabeaufforderungsvorlagen. 

Anstatt Eingabeaufforderungszeichenfolgen fest zu codieren, können Sie mithilfe von F-Strings wiederverwendbare und zusammensetzbare Eingabeaufforderungsvorlagen erstellen. Anschließend können Sie nach Bedarf Variablen, Fragen oder Kontext einfügen. 

Wenn Sie ein Framework wie LangChain verwenden, können Sie die PromptTemplate-Funktionen des Frameworks verwenden. Aber selbst wenn nicht, können Sie immer F-String-basierte Eingabeaufforderungsvorlagen verwenden.

Eingabeaufforderungen können so einfach sein wie:

prompt_1 = "Give me the top 5 best selling books of Stephen King."

Oder etwas flexibler (aber trotzdem supereinfach):

num = 5
author = 'Stephen King'
prompt_2 = f"Give me the top {num} best selling books of {author}."

In manchen Fällen ist es hilfreich, in Ihrer Eingabeaufforderung Kontext und einige Beispiele anzugeben.

Betrachten Sie dieses Beispiel:

# context
user_context = "I'm planning to travel to Paris; I need some information."

# examples
few_shot_examples = [
	{
    	"query": "What are some popular tourist attractions in Paris?",
    	"answer": "The Eiffel Tower, Louvre Museum, and Notre-Dame Cathedral are some popular attractions.",
	},
	{
    	"query": "What's the weather like in Paris in November?",
    	"answer": "In November, Paris experiences cool and damp weather with temperatures around 10-15°C.",
	},
]

# question
user_question = "Can you recommend some good restaurants in Paris?"

Hier ist eine wiederverwendbare Eingabeaufforderungsvorlage mit F-Strings. Was Sie für jeden Kontext verwenden können, beispielsweise für einen Abfrageanwendungsfall:

# Constructing the Prompt using a multiline string
prompt = f'''
Context: {user_context}

Examples:
'''
for example in few_shot_examples:
	prompt += f'''
Question:  {example['query']}\nAnswer: {example['answer']}\n'''
prompt += f'''

Query: {user_question}
'''

print(prompt)

Hier ist unsere Eingabeaufforderung für dieses Beispiel:

Output >>>
Context: I'm planning to travel to Paris; I need some information.

Examples:

Question:  What are some popular tourist attractions in Paris?
Answer: The Eiffel Tower, Louvre Museum, and Notre-Dame Cathedral are some popular attractions.

Question:  What's the weather like in Paris in November?
Answer: In November, Paris experiences cool and damp weather with temperatures around 10-15°C.


Query: Can you recommend some good restaurants in Paris?

Zusammenfassung

Und das ist Schluss. Ich hoffe, Sie haben ein paar Python-F-String-Funktionen gefunden, die Sie der Toolbox Ihres Programmierers hinzufügen können. Wenn Sie daran interessiert sind, Python zu lernen, schauen Sie sich unsere Zusammenstellung von 5 kostenlosen Büchern an, die Ihnen helfen, Python zu beherrschen. Viel Spaß beim Lernen!