logo

F-streng i Python

I denne opplæringen vil vi lære om strengformateringsmekanismen. F-strengen er den beste måten å formatere strengen på. Strengens formateringsstil gjør strengen mer lesbar, mer konsis og mindre utsatt for feil. Den er også raskere enn den andre.

Før vi dykker dypt inn i dette emnet, vil vi først diskutere teknikkene som ble brukt før f-strengen.

Gammel strengformatering i Python

Det er to hovedmåter for formatering av strengen: % - formatering og str.format(). Men begge metodene har noen begrensninger. La oss ha en kort introduksjon av disse gitte metodene.

1,% - formatering

Det er en tradisjonell måte å formatere strengen på, men dokumentene anbefaler denne metoden, som inneholder følgende setning.

'Formateringsoperasjonene som er beskrevet her viser en rekke særheter som fører til flere vanlige feil (som svikt i å vise tupler og ordbøker riktig).

Bruke de nyere formaterte strengliteralene eller str.format() grensesnittet hjelper til med å unngå disse feilene.' - Offisiell dokumentasjon .

Hvordan bruke % - formatering

Vi kan utføre innebygd drift ved å bruke %-operatoren. La oss forstå følgende eksempel.

string tokenizer java
 student = 'Michel' 'Hello, %s.' % student 

Produksjon:

 Hello Michel 

Vi kan også bruke tuppelen til å lagre de flere variablene. La oss se følgende eksempel.

 name = 'Sharma' age = 24 'Hello, %s. You are %s.' % (name, age) 

Produksjon:

 Hello Sharma You are 24. 

Hvorfor %-formatering ikke anbefales

Fordi ettersom variabelen økes og en lengre streng, blir koden vår mye mindre lettleselig. Koden ser rotete ut. La oss se følgende eksempel.

Eksempel -

 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)') 

Produksjon:

 Hello, Steve Rogers. Your age is 70. You are a Superhero. You were a member of Marvel. 

Som vi kan se i koden ovenfor, ble koden vanskelig å lese og mer utsatt for feilen. Det er derfor denne måten å formatere streng på ikke er bra.

2.str.format()-metoden

Det er en annen populær måte å formatere strengen introdusert i Python 2.6. La oss se hvordan vi kan bruke det.

Hvordan bruke str.format()

Det er en forbedring av %-formatering. Det er som en vanlig innebygd funksjon som kalles på objektet og at objektet blir konvertert til en streng.

La oss se følgende eksempel.

Eksempel -

 first_name = 'Mathew' last_name = 'Zukerburg' age = 45 print('Hello, {}. You are {}.'.format(name, age)') 

For å få tilgang til ordbokelementet i formatmetoden, kan vi sende nøkkelen i format()-metoden.

 person = {'name': 'Peter', 'age': 17} 'Hello, {name}. You are {age}.'.format(name=person['name'], age=person['age']) 

Produksjon:

 Hello Peter, You are 17 

Hvorfor anbefales ikke str.format()-metoden?

Str.format() er mye effektiv enn %-format-metoden, men den kan fortsatt være ganske detaljert når vi arbeider med flere parametere.

F-streng metode

Det er en ny strengformateringsmekanisme introdusert av PEP 498. Den er også kjent som Literal String Interpolation eller mer vanlig som F-strenger (f-tegn foran strengen bokstavelig). Hovedfokuset for denne mekanismen er å gjøre interpoleringen enklere.

Når vi prefikser strengen med bokstaven 'F, blir strengen selve f-strengen. F-strengen kan formateres på omtrent samme måte som str.format() metode. F-strengen tilbyr en praktisk måte å bygge inn Python-uttrykk i strengliteraler for formatering.

Eksempel -

 # 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.') 

Produksjon:

 Hello, My name is Tushar and I'm 28 years old. 

I koden ovenfor har vi brukt f-strengen for å formatere strengen. Den evaluerer ved kjøretid; vi kan legge inn alle gyldige Python-uttrykk i dem.

Vi kan bruke det i en enkelt uttalelse.

 print(f'{2 * 30})' 

Produksjon:

 60 

Imidlertid kunne vi bruke i funksjon.

 def upercase(input): return input.uper() name = 'Sachin Tendulkar' f'{upercase(name)} is great.' 

Produksjon:

 Sachin Tendulkar is great 

F-strengen kan også brukes med klasseobjektet. La oss forstå følgende eksempel.

Eksempel -

 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}') 

Produksjon:

dfa eksempler
 Keenu Reevs's superhit movie is Matrix. 

Forklaring -

I koden ovenfor har vi brukt __str__() og __repr__(), som representerer et objekt som en streng. Så vi må inkludere minst én av disse metodene i klassedefinisjonen. F-strengen vil bruke __str__() metoden; vi kan også bruke __repr__() ved å inkludere konverteringsflagget ! r.

 print(f'{ac}') print(f'{ac}'!r) 

Produksjon:

 Keenu Reevs's superhit movie is Matrix. Keenu Reevs Matrix Superhit 

F-streng i ordbok

Vi må passe på når vi jobber med ordboknøkler inne i f-strengen. Det er et annet sitat for å bruke ordboknøkler og f-streng. La oss forstå følgende eksempel.

Eksempel -

 detail = {'name': 'John', 'age': 19} print(f'{detail['name']} is {detail['age']} years old.') 

Produksjon:

 John is 19 years old. 

Metoden nedenfor er ikke tillatt i tilfelle av ordbok.

Eksempel -

 detail = {'name': 'John', 'age': 19} print(f'{detail['name']} is {detail['age']} years old.') 

Produksjon:

 File '', line 2 print(f'{detail['name']} is {detail['age']} years old.') ^ SyntaxError: invalid syntax 

Som vi kan se i koden ovenfor, endrer vi et dobbelt sitat til enkle anførselstegn, og det har gitt en feil.

Hastighet

Grunnen til å tilpasse denne formateringsstilen er hastigheten. F-strengen evalueres ved kjøretid i stedet for konstante verdier. Den legger inn uttrykk i strengliteraler, ved å bruke minimal syntaks. Det er raskt fordi det evalueres ved kjøretid, ikke en konstant verdi.

La oss se følgende strengsammenligning.

Eksempel - 1:

 import timeit print(timeit.timeit('''name = 'Sachin' age = 74 '%s is %s.' % (name, age)''', number = 10000)) 

Produksjon:

 0.0022497819736599922 

Eksempel - 2:

 import timeit print(timeit.timeit('''name = 'Mathew' age = 40 '{} is {}.'.format(name, age)''', number = 10000)) 

Produksjon:

 0.0025783719611354172 

Eksempel - 3:

 import timeit print(timeit.timeit('''name = 'Rockey' age = 74 f'{name} is {age}.'''', number = 10000)) 

Produksjon:

sammenknytte java-strenger
 0.0019360429723747075 

Som vi kan observere, er f-strengen på toppen av listen.

Seler

For å få klammeparenteser i koden, bør du bruke de doble anførselstegnene som følger. La oss forstå følgende eksempel.

Eksempel -

 f'{{70 + 40}}' 

Produksjon:

 {70 + 40} 

Hvis vi bruker trippel bukseseler, vil det vise enkle bukseseler i strengen vår. La oss forstå følgende eksempel.

Eksempel -

 f'{{{90 + 4}}}' 

Produksjon:

 {94} 

Vi kan vise flere tannregulering hvis vi bruker mer enn trippel tannregulering.

Eksempel -

 f'{{{{70 + 4}}}}' 

Produksjon:

 {{70 + 4}} 

Omvendt skråstrek

Vi kan bruke omvendt skråstrek i strengdelen av en f-streng. Vi kan imidlertid ikke bruke omvendte skråstreker for å unnslippe i uttrykksdelen av en f-streng. La oss forstå følgende eksempel.

Eksempel -

 f'{'Medric Pacalo'}' File '', line 1 f'{'Medric Pacalo'}' 

Produksjon:

 SyntaxError: f-string expression part cannot include a backslash 

Innebygde kommentarer

Vi kan ikke inkludere #-symbolet i uttrykket. Det vil gi en syntaksfeil. La oss forstå følgende eksempel.

Eksempel -

 f'Tony is {10 * 73 #Hate this!}.' f'Tonyr is {2 * 37 #Hate this!}.' 

Produksjon:

offentlig vs privat java
 SyntaxError: f-string expression part cannot include '#' 

Konklusjon

Vi kan bruke en metode av tre, men f-strengmetoden gir en mer kortfattet, lesbar og praktisk måte. Det er raskere og mindre utsatt for feil. Vi har forklart nesten alle mulige scenarier off-string og hvorfor man bør vurdere denne tilnærmingen i programmering.