Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

Pythonissa

...

on

...

mahdollisuus

...

tehdä

...

funktiosta

...

generaattori.

...

Generaattorit

...

palauttavat

...

iteraattoriksi

...

kutsutun

...

olion,

...

jolla

...

on

...

mahdollista

...

tuottaa

...

sarja

...

arvoja.

...

Tämä

...

on

...

vähän

...

sama

...

kuin,

...

jos

...

olisi

...

lista

...

ennaltamääritettyjä

...

arvoja,

...

jotka

...

käydään

...

peräkkäin

...

läpi,

...

mutta

...

generaattoreiden

...

tapauksessa

...

ohjelmassa

...

ei

...

tarvitse

...

varata

...

muistia

...

erilliselle

...

listalle.

...

Tämä

...

voi

...

johtaa

...

suuriin

...

säästöihin

...

muistin

...

käytössä,

...

jos

...

on

...

käytävä

...

suuri

...

määrä

...

arvoja

...

läpi.

...

Funktiosta

...

tehdään

...

generaattori

...

avainsanan

...

yield

...

avulla,

...

joka

...

toimii

...

samaan

...

tapaan

...

kuin

...

return.

...

Sen

...

avulla

...

voi

...

palauttaa

...

arvon,

...

mutta

...

toisin

...

kuin

...

return,

...

palautettuaan

...

yhden

...

arvon

...

funktion

...

suoritusta

...

jatketaan

...

uudestaan

...

avainsanan

...

yield

...

jälkeen.

...

Näitä

...

"askelia"

...

edetään

...

generaattorissa

...

sen

...

palauttaman

...

iteraattorin

...

funktiolla

...

next;

...

aina

...

kun

...

funktiota

...

next

...

kutsutaan

...

se

...

palauttaa

...

yhden

...

arvon.

...

Generaattorin

...

toiminta

...

päättyy

...

joko

...

funktion

...

loppuun

...

tai

...

avainsanaan

...

return.

...

Loppuessaan

...

iteraattori

...

synnyttää

...

poikkuksen.

...

Tässä

...

on

...

esimerkki

...

generaattorista,

...

joka

...

palauttaa

...

lukuarvojen

...

neliöitä.

...

Generaattorille

...

välitetään

...

parametri,

...

joka

...

määrittää

...

kuinka

...

monta

...

lukua

...

on

...

tarkoitus

...

käydä

...

läpi.

...

Tämä

...

generaattori

...

on

...

tehty

...

niin,

...

että

...

laskenta

...

alkaa

...

uudestaan

...

alusta

...

kun

...

kaikki

...

luvut

...

on

...

käyty

...

loppuun.

{
Code Block
}
def square(n):
    while True:
        for i in range(1, n + 1):
            yield i * i

it = square(3)

print(next(it))
print(next(it))
print(next(it))
print(next(it))

input("Paina Enter-näppäintä lopettaaksesi...")
{code}

Generaattorin

...

voi

...

asettaa

...

for

...

toistorakenteessa

...

avainsanan

...

in

...

jälkeen,

...

jolloin

...

for

...

käy

...

läpi

...

generaattorin

...

tuottamat

...

arvot.

...

Generaattoreita

...

voi

...

käyttää

...

for

...

toistorakenteessa

...

sijoittamalla

...

generaattori

...

avainsanan

...

in

...

jälkeen;

...

iteraattorin

...

palauttamia

...

arvoja

...

käydään

...

läpi

...

kunnes

...

generaattori

...

on

...

käynyt

...

loppuun.

...

Tässä

...

esimerkki

...

itsetehdyn

...

generaattorin

...

käytöstä

...

for

...

toistorakenteen

...

kanssa.

...

Aiempaan

...

versioon

...

täytyy

...

tehdä

...

muutos

...

jotta

...

iterointi

...

loppuisi,

...

muuten

...

for

...

toistorakenne

...

jäisi

...

ikuiseen

...

silmukkaan.

{
Code Block
}
def square(n):
    for i in range(1, n + 1):
        yield i * i

for i in square(10):
    print(i)

input("Paina Enter-näppäintä lopettaaksesi...")
{code}

Samoin

...

käytäessä

...

tiedostoa

...

läpi

...

toistorakenteessa

...

for

...

tiedosto-objekti

...

toimii

...

generaattorin,

...

joka

...

tuottaa

...

tiedoston

...

rivien

...

mukaisia

...

merkkijonoja.

...

Samoin

...

kokoelmat,

...

joiden

...

alkioita

...

voidaan

...

käydä

...

läpi

...

for

...

toistorakenteessa.

...

Muuttujista

...

voi

...

tehdä

...

iteraattorin

...

sisään

...

rakennetun

...

funktion

...

iter

...

avulla,

...

joka

...

ottaa

...

parametriksi

...

jonkun

...

muuttujan.