Ģenerators programmā Python ir funkcija, kas atgriež iteratoru, izmantojot atslēgvārdu Ienesīgums. Šajā rakstā mēs apspriedīsim, kā Python darbojas ģeneratora funkcija.
Ģeneratora funkcija Python
Ģeneratora funkcija programmā Python tiek definēta kā parasta funkcija, taču ikreiz, kad tai ir jāģenerē vērtība, tā to dara ar ražas atslēgvārds nevis atgriezties. Ja def pamattekstā ir ienesīgums, funkcija automātiski kļūst par Python ģeneratora funkciju.
Izveidojiet ģeneratoru programmā Python
Programmā Python mēs varam izveidot ģeneratora funkciju, vienkārši izmantojot atslēgvārdu def un ražas atslēgvārdu. Ģeneratoram ir šāda sintakse Python :
def function_name(): yield statement>
Piemērs:
Šajā piemērā mēs izveidosim vienkāršu ģeneratoru, kas iegūs trīs veselus skaitļus. Pēc tam mēs izdrukāsim šos veselos skaitļus, izmantojot Python cilpai .
Python3
# A generator function that yields 1 for first time,> # 2 second time and 3 third time> def> simpleGeneratorFun():> >yield> 1> >yield> 2> >yield> 3> > # Driver code to check above generator function> for> value>in> simpleGeneratorFun():> >print>(value)> |
java gadījums
>
>
Izvade:
1 2 3>
Ģeneratora objekts
Python Generator funkcijas atgriež ģeneratora objektu, kas ir atkārtojams, t.i., var tikt izmantots kā Iterators . Ģeneratora objekti tiek izmantoti, izsaucot nākamo ģeneratora objekta metodi vai izmantojot ģeneratora objektu for in cilpā.
Piemērs:
Šajā piemērā mēs programmā Python izveidosim vienkāršu ģeneratora funkciju, lai ģenerētu objektus, izmantojot next() funkcija .
Python3
# A Python program to demonstrate use of> # generator object with next()> > # A generator function> def> simpleGeneratorFun():> >yield> 1> >yield> 2> >yield> 3> > # x is a generator object> x>=> simpleGeneratorFun()> > # Iterating over the generator object using next> > # In Python 3, __next__()> print>(>next>(x))> print>(>next>(x))> print>(>next>(x))> |
>
plauktu suņi
>
Izvade:
1 2 3>
Piemērs:
Šajā piemērā mēs izveidosim divus Fibonači skaitļu ģeneratorus, vispirms vienkāršu ģeneratoru un otro ģeneratoru, izmantojot cilpai .
Python3
# A simple generator for Fibonacci Numbers> def> fib(limit):> > ># Initialize first two Fibonacci Numbers> >a, b>=> 0>,>1> > ># One by one yield next Fibonacci Number> >while> a yield a a, b = b, a + b # Create a generator object x = fib(5) # Iterating over the generator object using next # In Python 3, __next__() print(next(x)) print(next(x)) print(next(x)) print(next(x)) print(next(x)) # Iterating over the generator object using for # in loop. print('
Using for in loop') for i in fib(5): print(i)> |
savienojums java mysql
>
>
Izvade:
0 1 1 2 3 Using for in loop 0 1 1 2 3>
Python ģeneratora izteiksme
Programmā Python ģeneratora izteiksme ir vēl viens veids, kā ierakstīt ģeneratora funkciju. Tas izmanto Python saraksta izpratne tehnika, bet tā vietā, lai saglabātu elementus sarakstā atmiņā, tas rada ģeneratora objektus.
Ģeneratora izteiksmes sintakse
Ģeneratora izteiksmei Python ir šāda sintakse:
(expression for item in iterable)>
Piemērs:
Šajā piemērā mēs izveidosim ģeneratora objektu, kas izdrukās 5 reizinājumus diapazonā no 0 līdz 5, kas arī dalās ar 2.
Python3
aktuāls java datums
# generator expression> generator_exp>=> (i>*> 5> for> i>in> range>(>5>)>if> i>%>2>=>=>0>)> > for> i>in> generator_exp:> >print>(i)> |
>
>
Izvade:
0 10 20>
Ģeneratoru lietojumprogrammas Python
Pieņemsim, ka mēs izveidojam Fibonači skaitļu plūsmu, un ģeneratora pieeja padara to triviālu; mums vienkārši jāzvana nākamais(x), lai iegūtu nākamo Fibonači numuru, neuztraucoties par to, kur un kad beidzas skaitļu straume. Praktiskāks straumes apstrādes veids ir lielu datu failu, piemēram, žurnālfailu, apstrāde. Ģeneratori nodrošina vietu taupošu metodi šādai datu apstrādei, jo vienā noteiktā brīdī tiek apstrādātas tikai faila daļas. Šiem nolūkiem mēs varam izmantot arī iteratorus, taču ģenerators nodrošina ātru veidu (mums šeit nav jāraksta __next__ un __iter__ metodes).