In questo tutorial impareremo il meccanismo di formattazione delle stringhe. La stringa f è il modo migliore per formattare la stringa. Lo stile di formattazione della stringa rende la stringa più leggibile, più concisa e meno soggetta a errori. È anche più veloce dell'altro.
Prima di approfondire questo argomento, discuteremo innanzitutto delle tecniche utilizzate prima della corda FA.
Vecchia formattazione delle stringhe in Python
Esistono due modi principali per formattare la stringa: % - formattazione e str.format(). Ma entrambi i metodi presentano alcune limitazioni. Facciamo una breve introduzione di questi metodi indicati.
1,% - formattazione
È un modo tradizionale di formattare la stringa, ma la documentazione consiglia questo metodo, che contiene la seguente istruzione.
'Le operazioni di formattazione qui descritte mostrano una serie di stranezze che portano a diversi errori comuni (come la mancata visualizzazione corretta di tuple e dizionari).
Utilizzando i valori letterali stringa formattati più recenti o il file str.format() l'interfaccia aiuta a evitare questi errori.' - Documentazione ufficiale .
Come utilizzare % - formattazione
Possiamo eseguire operazioni integrate utilizzando l'operatore %. Comprendiamo il seguente esempio.
programmazione round robin
student = 'Michel' 'Hello, %s.' % student
Produzione:
Hello Michel
Possiamo anche usare la tupla per memorizzare più variabili. Vediamo il seguente esempio.
name = 'Sharma' age = 24 'Hello, %s. You are %s.' % (name, age)
Produzione:
Hello Sharma You are 24.
Perché la formattazione% non è consigliata
Perché man mano che la variabile viene aumentata e la stringa diventa più lunga, il nostro codice diventa molto meno facilmente leggibile. Il codice sembra confuso. Vediamo il seguente esempio.
Esempio -
first_name = 'Steve' last_name = 'Rogers' age = 70 profession = 'Superhero' group = 'Marvel? print(''Hello, %s %s. Your age is %s. You are a %s. You were a member of %s.' %(first_name, last_name, age, profession)')
Produzione:
Hello, Steve Rogers. Your age is 70. You are a Superhero. You were a member of Marvel.
Come possiamo vedere nel codice sopra, il codice è diventato difficile da leggere e più incline all'errore. Ecco perché questo modo di formattare la stringa non è buono.
Metodo 2.str.format()
È un altro modo popolare per formattare la stringa introdotta in Python 2.6. Vediamo come possiamo usarlo.
Come utilizzare str.format()
È un miglioramento della formattazione %. È come una normale funzione integrata richiamata sull'oggetto e l'oggetto convertito in una stringa.
Vediamo il seguente esempio.
Esempio -
first_name = 'Mathew' last_name = 'Zukerburg' age = 45 print('Hello, {}. You are {}.'.format(name, age)')
Per accedere all'elemento dizionario all'interno del metodo format, possiamo passare la chiave nel metodo format().
person = {'name': 'Peter', 'age': 17} 'Hello, {name}. You are {age}.'.format(name=person['name'], age=person['age'])
Produzione:
Hello Peter, You are 17
Perché il metodo str.format() non è raccomandato?
Il metodo str.format() è molto efficiente rispetto al metodo %-format ma può risultare comunque piuttosto prolisso quando si tratta di parametri multipli.
Metodo della stringa F
Si tratta di un nuovo meccanismo di formattazione delle stringhe introdotto dal PEP 498. È noto anche come Literal String Interpolation o più comunemente come F-strings (carattere f che precede la stringa letterale). L'obiettivo principale di questo meccanismo è rendere più semplice l'interpolazione.
Quando anteponiamo la stringa con la lettera 'F, la stringa diventa la stringa f stessa. La stringa f può essere formattata più o meno come il file str.format() metodo. La stringa F offre un modo conveniente per incorporare l'espressione Python all'interno di stringhe letterali per la formattazione.
Esempio -
# Python3 program introducing f-string val = 'Geeks' print(f'{val}for{val} is a portal for {val}.') name = 'Tushar' age = 23 print(f'Hello, My name is {name} and I'm {age} years old.')
Produzione:
Hello, My name is Tushar and I'm 28 years old.
Nel codice precedente, abbiamo utilizzato la stringa f per formattare la stringa. Valuta in fase di esecuzione; possiamo inserirvi tutte le espressioni Python valide.
Possiamo usarlo in una singola istruzione.
print(f'{2 * 30})'
Produzione:
60
Tuttavia, potremmo utilizzare in function.
def upercase(input): return input.uper() name = 'Sachin Tendulkar' f'{upercase(name)} is great.'
Produzione:
scrivi json nel file python
Sachin Tendulkar is great
La stringa f potrebbe essere utilizzata anche con l'oggetto classe. Comprendiamo il seguente esempio.
Esempio -
class Actor: def __init__(self, first_name, last_name, movie): self.first_name = first_name self.last_name = last_name self.movie = movie def __str__(self): return f'{self.first_name} {self.last_name}'s superhit movie is {self.movie}.' def __repr__(self): return f'{self.first_name} {self.last_name} {self.movie}. Superhi!' ac = Actor('Keenu', 'Reevs', 'Matrix') print(f'{ac}')
Produzione:
Keenu Reevs's superhit movie is Matrix.
Spiegazione -
Nel codice precedente, abbiamo utilizzato __str__() e __repr__(), che rappresentano un oggetto come una stringa. Quindi dobbiamo includere almeno uno di questi metodi nella definizione della classe. La stringa f utilizzerà il metodo __str__(); possiamo anche usare __repr__() includendo il flag di conversione! R.
print(f'{ac}') print(f'{ac}'!r)
Produzione:
Keenu Reevs's superhit movie is Matrix. Keenu Reevs Matrix Superhit
F-string nel dizionario
Dobbiamo fare attenzione mentre lavoriamo con le chiavi del dizionario all'interno della stringa f. Esiste una citazione diversa per utilizzare le chiavi del dizionario e la stringa f. Comprendiamo il seguente esempio.
Esempio -
detail = {'name': 'John', 'age': 19} print(f'{detail['name']} is {detail['age']} years old.')
Produzione:
John is 19 years old.
Il metodo seguente non è consentito in caso di dizionario.
Esempio -
detail = {'name': 'John', 'age': 19} print(f'{detail['name']} is {detail['age']} years old.')
Produzione:
File '', line 2 print(f'{detail['name']} is {detail['age']} years old.') ^ SyntaxError: invalid syntax
Come possiamo vedere nel codice sopra, cambiamo una virgoletta doppia in virgolette singole e viene generato un errore.
Velocità
Il motivo per adattare questo stile di formattazione è la sua velocità. La stringa f viene valutata in fase di esecuzione anziché con valori costanti. Incorpora l'espressione all'interno di stringhe letterali, utilizzando una sintassi minima. È veloce perché valuta in fase di esecuzione, non un valore costante.
Vediamo il seguente confronto tra stringhe.
Esempio 1:
import timeit print(timeit.timeit('''name = 'Sachin' age = 74 '%s is %s.' % (name, age)''', number = 10000))
Produzione:
0.0022497819736599922
Esempio - 2:
import timeit print(timeit.timeit('''name = 'Mathew' age = 40 '{} is {}.'.format(name, age)''', number = 10000))
Produzione:
0.0025783719611354172
Esempio - 3:
import timeit print(timeit.timeit('''name = 'Rockey' age = 74 f'{name} is {age}.'''', number = 10000))
Produzione:
importa scanner java
0.0019360429723747075
Come possiamo osservare, la stringa f è in cima all'elenco.
Bretelle
Per far apparire le parentesi graffe nel codice, è necessario utilizzare le virgolette doppie come segue. Comprendiamo il seguente esempio.
Esempio -
f'{{70 + 40}}'
Produzione:
{70 + 40}
Se utilizziamo le parentesi graffe triple, verranno visualizzate le parentesi graffe singole nella nostra stringa. Comprendiamo il seguente esempio.
Esempio -
f'{{{90 + 4}}}'
Produzione:
{94}
Possiamo visualizzare più parentesi graffe se utilizziamo più di triple parentesi graffe.
Esempio -
f'{{{{70 + 4}}}}'
Produzione:
{{70 + 4}}
Barre rovesciate
Possiamo usare gli escape della barra rovesciata nella porzione di stringa di una stringa f. Tuttavia, non possiamo usare le barre rovesciate per eseguire l'escape nella parte espressione di una stringa f. Comprendiamo il seguente esempio.
Esempio -
f'{'Medric Pacalo'}' File '', line 1 f'{'Medric Pacalo'}'
Produzione:
SyntaxError: f-string expression part cannot include a backslash
Commenti in linea
Non possiamo includere il simbolo # nell'espressione. Genererà un errore di sintassi. Comprendiamo il seguente esempio.
attore rohit shetty
Esempio -
f'Tony is {10 * 73 #Hate this!}.' f'Tonyr is {2 * 37 #Hate this!}.'
Produzione:
SyntaxError: f-string expression part cannot include '#'
Conclusione
Possiamo utilizzare uno qualsiasi dei tre metodi, ma il metodo f-string fornisce un modo più conciso, leggibile e conveniente. È più veloce e meno soggetto a errori. Abbiamo spiegato quasi tutti i possibili scenari off-string e perché si dovrebbe considerare questo approccio nella programmazione.