I dette emnet lærer vi Python Generator.
Definisjon: En generator er som en normal funksjon som genererer en rekke verdier ved å bruke utbytte nøkkelord. Det returnerer ett objekt om gangen. Den bruker internt en iterator. For å få tilgang til neste element Neste () funksjon brukes, eller vi kan bruke den til en sløyfe. Hvis vi prøver å få tilgang til verdien utenfor området, hever det en StopIteration feil.
Vi vil se et eksempel for å forstå bedre
Eks: Generatorfunksjon for verdien av verdier
def range_fun (n):
x = 0
mens x < n:
avkastning x
x += 1
y = range_fun (3)
#call bruker for loop
print ('generer verdier ved bruk av neste () metode')
for jeg i Range_fun (3):
trykk (i)
#Call Generator ved hjelp av neste metode
print ('generere verdier som bruker for loopmetode')
trykk (neste (y))
trykk (neste (y))
trykk (neste (y))
print (neste (y))#stopp iterasjons unntak vil bli hevet
Eks: Generatorfunksjon for Fibonacci -serien
def fib_fun (n):
x, y = 0, 1
mens x < n:
avkastning x
x, y = y, x + y
Z = FIB_FUN (6) #Generator -objekt
print ('generer verdier ved bruk av neste () metode')
Print (Next (Z))
Print (Next (Z))
Print (Next (Z))
Print (Next (Z))
Print (Next (Z))
Print (Next (Z))
print ('generere verdier som bruker for loopmetode')
for jeg i fib_fun (6):
trykk (i)
Eks: Generatorfunksjon for å skape utvalg av verdier gitt start- og sluttverdier.
def my_range (start, slutt):
Nåværende = start
Mens strøm < end:
Utbytte strøm
Nåværende += 1
print ('generer verdier ved bruk av neste () metode')
nums = my_range (1,5)
Print (NESTE (NUMS))
Print (NESTE (NUMS))
Print (NESTE (NUMS))
Print (NESTE (NUMS))
print ('generere verdier som bruker for loopmetode')
for num i my_range (1,5):
Print (Num)
Eks: Generator for å multiplisere hvert tall (mindre enn et tall) med et tall
def gen_mulby_num (maks, num):
n = 0
mens n < max:
avkastning n * num
n += 1
for jeg i gen_mulby_num (5,3):
trykk (i)
Eks: Generator for å finne kube for verdier av verdier
def gen_mulby_num (maks, num):
n = 0
mens n < max:
avkastning n * num
n += 1
for jeg i gen_mulby_num (5,3):
trykk (i)
Eks: Flere generatorer: Finn kvadratet med jevn tall generert fra et tall
Generator 1: Generer jevn verdier fra et gitt tall
Generator 2: Generer kvadratmeter fra generator1verdier
def gen_even (m):
n = 0
mens n < m:
Hvis n % 2 == 0:
avkastning n
n += 2
def gen_square (nums):
for NUM i NUMS:
avkastning 2 * num
for n i gen_square (Gen_even (15)):
trykk (n)
Eks: Flere generatorer: Lag Fibnacci -serien og tilfører verdi 10 hvert tall.
Generator1: Genererer Fibonacci -serier fra et gitt tall
Generator2: Legg til hvert nummer med 10 fra generator1
def gen_fib (n):
x, y = 0, 1
mens x < n:
avkastning x
x, y = y, x + y
def gen_add_10 (nums):
for NUM i NUMS:
avkastning 10 + num
for n i gen_add_10 (gen_fib (5)):
trykk (n)
Generatorforståelser:
Generatorforståelser ligner på listeforståelser der listen bruker firkantede parenteser; Dette bruker normal parentes.
Eks:
nums = (i for i in range (10))
Print (Type (NUMS))
utskrift (liste (nums))
Forskjell mellom generator og normal funksjon:
- En generator gir verdier ved hjelp av utbytte nøkkelord der normal funksjon bruker komme tilbake nøkkelord
- Generator starter fra der den stoppet når den ble ringt neste gang. Den normale funksjonen utfører alle utsagn hver gang.
- Generator sparer minne når den returnerer en verdi om gangen. Så vi kan bruke den til å generere uendelige verdier.
Konklusjon:
Generatoren er veldig nyttig når vi håndterer enorme/store data. På et gitt tidspunkt har det bare ett enkelt stykke data i stedet for hele data. Generatorkonsept regnes som et avansert konsept i Python.