Python f-Strings Magia 5 Trucchi Rivoluzionari Che Ogni Programmatore Deve Conoscere

Python f-Strings 5 Trucchi Rivoluzionari di Magia che Ogni Programmatore Deve Conoscere

Se utilizzi Python da un po’ di tempo, probabilmente hai smesso di utilizzare il vecchio metodo format() per formattare le stringhe. E hai optato per gli f-Strings più concisi e facili da mantenere introdotte in Python 3.6. Ma c’è di più.

Dal momento che Python 3.8 ci sono alcune funzionalità interessanti che puoi utilizzare con gli f-string per il debugging, la formattazione di oggetti datetime e numeri floating point, e molto altro ancora. Esploreremo questi casi d’uso in questo tutorial.

Nota: Per eseguire gli esempi di codice, è necessario avere installato Python 3.8 o una versione successiva.

1. Debugging più semplice

Quando stai programmando, potresti utilizzare le istruzioni print() per stampare le variabili e verificare se i loro valori corrispondono a quanto ti aspetti. Con gli f-string, puoi includere i nomi delle variabili e i loro valori per facilitare il debugging.

Considera il seguente esempio:

 lunghezza = 4,5larghezza = 7,5altezza = 9,0print(f'{length=}, {breadth=}, {height=}') 

Questo produce l’output:

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

Questa funzionalità è particolarmente utile quando si desidera comprendere lo stato delle variabili durante il debugging. Tuttavia, per il codice di produzione, è consigliabile configurare il logging con i livelli di log richiesti.

2. Belle formattazioni per float e date

Quando si stampa numeri in virgola mobile e oggetti datetime in Python, è necessario:

  • Formattare i numeri in virgola mobile per includere un numero fisso di cifre dopo il punto decimale
  • Formattare le date in un formato coerente specifico

Gli f-strings forniscono un modo semplice per formattare float e date secondo le tue esigenze.

In questo esempio, formatti la variabile prezzo per visualizzare due decimali dopo il punto decimale specificando {price:.2f} come segue:

 prezzo = 1299,50print(f'Prezzo: ${price:.2f}') 

Questo produce l’output:

 Output >>> Prezzo: $1299,50 

In Python, avresti utilizzato il metodo strftime() per formattare gli oggetti datetime. Ma puoi farlo anche con gli f-string. Ecco un esempio:

 from datetime import datetimecurrent_time = datetime.now()print(f'Data e ora correnti: {current_time:%Y-%m-%d %H:%M:%S}') 

Questo produce l’output:

 Output >>> Data e ora correnti: 2023-10-12 15:25:08 

Proviamo un esempio semplice che include sia la formattazione di una data che di un float:

 prezzo = 1299,50data_acquisto = datetime(2023, 10, 12, 15, 30)print(f'Prodotto acquistato per ${price:.2f} il {purchase_date:%B %d, %Y alle %H:%M}') 

Questo produce l’output:

 Output >>> Prodotto acquistato per $1299,50 il 12 ottobre 2023 alle 15:30 

3. Conversioni di base nei valori numerici

Gli f-string supportano la conversione di base per i tipi di dati numerici, consentendo di convertire numeri da una base all’altra. Quindi non è necessario scrivere funzioni separate per la conversione di base o lambda per visualizzare il numero in una base diversa.

Per stampare le equivalenti binarie ed esadecimali del numero decimale 42 puoi utilizzare la f-string come mostrato:

num = 42print(f'Decimale {num}, in binario: {num:b}, in esadecimale: {num:x}')

 

Output >>>Decimale 42, in binario: 101010, in esadecimale: 2a

 

Come si può vedere, questo è utile quando devi stampare numeri in basi diverse, come binario o esadecimale. Prendiamo un altro esempio per la conversione decimale in ottale:

num = 25print(f'Decimale {num}, in ottale: {num:o}')

 

Output >>> Decimale 25, in ottale: 31

 

Ricordi che 31 ottale = 25 decimale? Sì, questo esempio è ispirato dai meme “Perché gli sviluppatori confondono Halloween con Natale?”

 

4. Conversioni ASCII e repr utili

 

Puoi utilizzare i flag di conversione !a e !r all’interno delle f-string per formattare le stringhe come stringhe ASCII e repr, rispettivamente.

A volte potresti dover convertire una stringa in notazione ASCII. Ecco come puoi farlo utilizzando il flag!a:

emoji = "🙂" print(f'Rappresentazione ASCII di Emoji: {emoji!a}')

 

Output >>>Rappresentazione ASCII di Emoji: '\U0001f642'

 

Per accedere al repr di qualsiasi oggetto puoi utilizzare le f-string con il flag!r:

from dataclasses import dataclass@dataclassclass Point3D:    x: float = 0.0  y: float = 0.0  z: float = 0.0point = Point3D(0.5, 2.5, 1.5)print(f'Repr di un punto 3D: {point!r}')

 

Le dataclass di Python hanno l’implementazione predefinita di__repr__, quindi non dobbiamo scriverne una esplicitamente.

Output >>>Repr di un punto 3D: Point3D(x=0.5, y=2.5, z=1.5)

 

5. Formattazione di modelli di prompt LLM

 

Quando si lavora con grandi modelli di linguaggio come Llama e GPT-4, le f-string sono utili per creare modelli di prompt.

invece di codificare duramente le stringhe dei prompt, puoi creare modelli di prompt riutilizzabili e componibili utilizzando le f-string. Puoi quindi inserire variabili, domande o contesto come necessario.

Se stai utilizzando un framework come LangChain, puoi utilizzare le funzionalità PromptTemplate del framework. Ma anche se non lo fai, puoi sempre utilizzare modelli di prompt basati su f-string.

I prompt possono essere semplici come:

prompt_1 = "Dammi i primi 5 libri più venduti di Stephen King."

 

O un po’ più flessibili (ma comunque semplicissimi):

num = 5author = 'Stephen King'prompt_2 = f"Dammi i primi {num} libri più venduti di {author}."

 

In alcuni casi può essere utile fornire contesto e alcuni esempi nel prompt.

Considera questo esempio:

# contestouser_context = "Sto pianificando di viaggiare a Parigi; ho bisogno di informazioni."# esempi few_shot_examples = [    {       "query": "Quali sono alcune attrazioni turistiche popolari a Parigi?",     "answer": "La Torre Eiffel, il Museo del Louvre e la Cattedrale di Notre-Dame sono alcune attrazioni popolari.",    },  {       "query": "Qual è il clima a Parigi a novembre?",       "answer": "A novembre, Parigi ha un clima fresco e umido con temperature intorno ai 10-15°C.", },]# domandouser_question = "Puoi consigliare alcuni buoni ristoranti a Parigi?"

 

Ecco un modello di prompt riutilizzabile usando le f-strings. Puoi usarlo in qualsiasi contesto, esempio o caso d’uso di query:

# Costruzione del prompt usando una stringa multirigoraprompt = f'''Contesto: {user_context}Esempi:'''for example in few_shot_examples:   prompt += f'''Domanda:  {example['query']}\nRisposta: {example['answer']}\n'''prompt += f'''Query: {user_question}'''print(prompt)

 

Ecco il nostro prompt per questo esempio:

Output >>>Contesto: Sto pianificando di viaggiare a Parigi; ho bisogno di informazioni.Esempi:Domanda:  Quali sono alcune delle attrazioni turistiche popolari a Parigi?Risposta: La Torre Eiffel, il Museo del Louvre e la Cattedrale di Notre-Dame sono alcune delle attrazioni popolari.Domanda:  Com'è il clima a Parigi a novembre?Risposta: A novembre, Parigi ha un clima fresco e umido, con temperature intorno ai 10-15°C.Query: Puoi consigliare alcuni buoni ristoranti a Parigi?

 

Conclusione

 

E questo è tutto. Spero tu abbia trovato alcune caratteristiche delle f-strings di Python da aggiungere al tuo set di strumenti da programmatore. Se sei interessato a imparare Python, dai un’occhiata alla nostra raccolta di  5 libri gratuiti per aiutarti a padroneggiare Python. Buono studio!  

[Bala Priya C](https://twitter.com/balawc27) è una sviluppatrice e scrittrice tecnica proveniente dall’India. Le piace lavorare all’incrocio tra matematica, programmazione, data science e creazione di contenuti. Le sue aree di interesse e competenza includono DevOps, data science e elaborazione del linguaggio naturale. Ama leggere, scrivere, programmare e bere caffè! Attualmente sta lavorando per imparare e condividere le sue conoscenze con la comunità degli sviluppatori scrivendo tutorial, guide pratiche, articoli di opinione e altro ancora.