logo

F niz u Pythonu

U ovom vodiču naučit ćemo o mehanizmu oblikovanja niza. F-niz je najbolji način za formatiranje niza. Stil oblikovanja niza čini niz čitljivijim, sažetijim i manje podložnim pogreškama. Također je brži od drugog.

Prije nego što duboko zaronimo u ovu temu, prvo ćemo razgovarati o tehnikama koje su korištene prije niza f.

Staro oblikovanje niza u Pythonu

Postoje dva glavna načina za formatiranje niza: % - formatiranje i str.format(). Ali obje metode imaju neka ograničenja. Hajdemo ukratko predstaviti ove dane metode.

1.% - oblikovanje

To je tradicionalni način oblikovanja niza, ali dokumenti preporučuju ovu metodu koja sadrži sljedeću izjavu.

'Ovdje opisane operacije oblikovanja pokazuju različite nedostatke koji dovode do nekoliko uobičajenih pogrešaka (kao što je neispravan prikaz torki i rječnika).

Korištenje novijih formatiranih string literala ili str.format() sučelje pomaže u izbjegavanju ovih grešaka.' - Službena dokumentacija .

Kako koristiti % - formatiranje

Ugrađenu operaciju možemo izvesti koristeći %-operator. Razumimo sljedeći primjer.

ssis tutorial
 student = 'Michel' 'Hello, %s.' % student 

Izlaz:

 Hello Michel 

Također možemo koristiti torku za pohranjivanje više varijabli. Pogledajmo sljedeći primjer.

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

Izlaz:

 Hello Sharma You are 24. 

Zašto se %-formatiranje ne preporučuje

Jer kako se varijabla povećava i niz je duži, naš kod postaje mnogo teže čitljiv. Šifra izgleda neuredno. Pogledajmo sljedeći primjer.

Primjer -

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

Izlaz:

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

Kao što možemo vidjeti u gornjem kodu, kod je postao težak za čitanje i skloniji greškama. Zato ovakav način oblikovanja stringa nije dobar.

2.metoda str.format().

To je još jedan popularan način formatiranja niza uveden u Python 2.6. Pogledajmo kako to možemo iskoristiti.

Kako koristiti str.format()

To je poboljšanje %-formatiranja. To je poput normalne ugrađene funkcije koja se poziva na objekt i taj se objekt pretvara u niz.

Pogledajmo sljedeći primjer.

Primjer -

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

Za pristup elementu rječnika unutar metode formata, možemo proslijediti ključ metodi format().

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

Izlaz:

 Hello Peter, You are 17 

Zašto se metoda str.format() ne preporučuje?

Metoda str.format() mnogo je učinkovitija od metode %-format, ali još uvijek može biti prilično opširna kada imamo posla s višestrukim parametrima.

Metoda F-žice

To je novi mehanizam formatiranja niza koji je uveo PEP 498. Također je poznat kao interpolacija doslovnog niza ili češće kao F-nizovi (znak f koji prethodi literalu niza). Primarni fokus ovog mehanizma je olakšati interpolaciju.

Kada pred niz stavimo slovo 'F, niz postaje sam f-string. F-niz se može formatirati na isti način kao i str.format() metoda. F-string nudi prikladan način za ugradnju Python izraza unutar string literala za formatiranje.

Primjer -

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

Izlaz:

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

U gornjem kodu koristili smo f-niz za formatiranje niza. Ocjenjuje tijekom izvođenja; u njih možemo staviti sve važeće Python izraze.

hiba bukhari

Možemo ga koristiti u jednoj izjavi.

 print(f'{2 * 30})' 

Izlaz:

 60 

Međutim, mogli bismo koristiti u funkciji.

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

Izlaz:

 Sachin Tendulkar is great 

F-niz se također može koristiti s objektom klase. Razumimo sljedeći primjer.

Primjer -

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

Izlaz:

 Keenu Reevs's superhit movie is Matrix. 

Objašnjenje -

U gornjem kodu koristili smo __str__() i __repr__(), koji predstavljaju objekt kao niz. Stoga moramo uključiti barem jednu od tih metoda u definiciju klase. f-niz će koristiti metodu __str__(); također možemo koristiti __repr__() uključivanjem oznake konverzije! r.

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

Izlaz:

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

F-string u rječniku

Moramo paziti dok radimo s ključevima rječnika unutar f-stringa. Postoji drugačiji citat za korištenje ključeva rječnika i f-stringa. Razumimo sljedeći primjer.

Primjer -

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

Izlaz:

 John is 19 years old. 

Metoda u nastavku nije dopuštena u slučaju rječnika.

Primjer -

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

Izlaz:

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

Kao što možemo vidjeti u gornjem kodu, mijenjamo dvostruke navodnike u jednostruke navodnike, a to je izbacilo pogrešku.

Ubrzati

Razlog prilagodbe ovog stila oblikovanja je njegova brzina. F-string procjenjuje u vrijeme izvođenja umjesto konstantnih vrijednosti. Ugrađuje izraz unutar string literala, koristeći minimalnu sintaksu. Brz je jer procjenjuje tijekom izvođenja, a ne konstantnu vrijednost.

Pogledajmo sljedeću usporedbu nizova.

Primjer - 1:

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

Izlaz:

 0.0022497819736599922 

Primjer - 2:

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

Izlaz:

 0.0025783719611354172 

Primjer - 3:

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

Izlaz:

baš elif
 0.0019360429723747075 

Kao što možemo primijetiti, f-niz je na vrhu liste.

Proteza za zube

Da bi se u kodu pojavile zagrade, trebali biste koristiti dvostruke navodnike kako slijedi. Razumimo sljedeći primjer.

Primjer -

 f'{{70 + 40}}' 

Izlaz:

 {70 + 40} 

Ako koristimo trostruke zagrade, prikazat će se pojedinačne zagrade u našem nizu. Razumimo sljedeći primjer.

Primjer -

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

Izlaz:

 {94} 

Možemo prikazati više zagrada ako koristimo više od trostrukih zagrada.

Primjer -

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

Izlaz:

 {{70 + 4}} 

Obrnute kose crte

Možemo koristiti obrnute kose crte u dijelu stringa f-stringa. Međutim, ne možemo koristiti obrnute kose crte za izbjegavanje u dijelu izraza f-stringa. Razumimo sljedeći primjer.

Primjer -

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

Izlaz:

 SyntaxError: f-string expression part cannot include a backslash 

Inline komentari

Ne možemo uključiti simbol # u izraz. Izbacit će sintaktičku pogrešku. Razumimo sljedeći primjer.

Primjer -

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

Izlaz:

 SyntaxError: f-string expression part cannot include '#' 

Zaključak

Možemo koristiti bilo koju metodu od tri, ali metoda f-niza pruža sažetiji, čitljiviji i praktičniji način. Brži je i manje sklon greškama. Objasnili smo gotovo svaki mogući scenarij izvan niza i zašto bismo trebali razmotriti ovaj pristup u programiranju.

u nizu u Javi