logo

Generatorji v Pythonu

Generator v Pythonu je funkcija, ki vrne iterator s ključno besedo Yield. V tem članku bomo razpravljali o tem, kako funkcija generatorja deluje v Pythonu.

Generatorska funkcija v Pythonu

Generatorska funkcija v Pythonu je definirana kot običajna funkcija, vendar kadar koli mora ustvariti vrednost, to stori z yield ključna beseda namesto vrnitve. Če telo def vsebuje yield, funkcija samodejno postane funkcija generatorja Python.



Ustvarite generator v Pythonu

V Pythonu lahko ustvarimo generatorsko funkcijo s preprosto uporabo ključnih besed def in ključnih besed yield. Generator ima naslednjo sintakso Python :

def function_name():  yield statement>

primer:

V tem primeru bomo ustvarili preprost generator, ki bo dal tri cela števila. Nato bomo ta cela števila natisnili z uporabo Pythona za zanko .



Python3

755 chmod






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

>

>

Izhod:

1 2 3>

Objekt generatorja

Funkcije Python Generator vrnejo objekt generatorja, ki ga je mogoče ponoviti, tj. Iterator . Objekti generatorja se uporabljajo tako, da pokličejo naslednjo metodo objekta generatorja ali uporabijo objekt generatorja v zanki for in.

primer:

V tem primeru bomo ustvarili preprosto generatorsko funkcijo v Pythonu za generiranje objektov z uporabo funkcija next(). .

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

>

kako odpreti datoteko z javo

>

Izhod:

1 2 3>

primer:

V tem primeru bomo ustvarili dva generatorja za Fibonaccijeva števila, prvi preprost generator in drugi generator z uporabo a za zanko .

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

povezava java mysql
>

>

Izhod:

0 1 1 2 3  Using for in loop 0 1 1 2 3>

Izraz generatorja Python

V Pythonu je izraz generatorja še en način pisanja funkcije generatorja. Uporablja Python razumevanje seznama vendar namesto shranjevanja elementov na seznamu v pomnilnik ustvari objekte generatorja.

Sintaksa izraza generatorja

Generatorski izraz v Pythonu ima naslednjo sintakso:

(expression for item in iterable)>

primer:

V tem primeru bomo ustvarili objekt generatorja, ki bo natisnil večkratnike števila 5 med obsegom od 0 do 5, ki so prav tako deljivi z 2.

Python3




java ločilo

# generator expression> generator_exp>=> (i>*> 5> for> i>in> range>(>5>)>if> i>%>2>=>=>0>)> > for> i>in> generator_exp:> >print>(i)>

>

>

Izhod:

0 10 20>

Uporaba generatorjev v Pythonu

Recimo, da ustvarimo tok Fibonaccijevih števil, sprejem generatorskega pristopa ga naredi trivialnega; samo poklicati moramo next(x), da dobimo naslednje Fibonaccijevo število, ne da bi se obremenjevali s tem, kje ali kdaj se tok števil konča. Bolj praktična vrsta obdelave toka je obdelava velikih podatkovnih datotek, kot so dnevniške datoteke. Generatorji zagotavljajo prostorsko učinkovito metodo za takšno obdelavo podatkov, saj se v določenem trenutku obravnavajo samo deli datoteke. Za te namene lahko uporabimo tudi iteratorje, vendar Generator ponuja hiter način (tukaj nam ni treba pisati metod __next__ in __iter__).