Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Uendelige Generatorer | Specifikation af Funktions Returværdi
Python Funktioner Tutorial
Sektion 4. Kapitel 5
single

single

Uendelige Generatorer

Stryg for at vise menuen

Husk, at yield sætter en generator på pause og genoptager den ved næste next()-kald. Indtil nu har de generatorer, du har set, haft et tydeligt stoppunkt. Men generatorer bliver særligt kraftfulde, når de kombineres med et uendeligt loop – hvilket muliggør produktion af værdier uendeligt uden nogensinde at gemme dem i hukommelsen.

Uendelige generatorer med while True

Brug af et while True-loop inde i en generator skaber en uendelig sekvens – noget, der ville være umuligt at gemme som en liste. Generatoren producerer kun den næste værdi, når next() kaldes:

1234567891011
def counter(): count = 1 while True: # Runs forever yield count # Return current value and pause count += 1 # Resume from here on the next call gen = counter() print(next(gen)) # 1 print(next(gen)) # 2 print(next(gen)) # 3

Uanset hvor mange gange du kalder next(), vil generatoren altid have en ny værdi klar – den kører aldrig forud eller gemmer værdier i hukommelsen.

Styring af en uendelig generator

Da generatoren kører uendeligt, skal du styre, hvor mange værdier du henter. Den mest almindelige metode er at bruge en for-løkke med range():

12345678910
def counter(): count = 1 while True: yield count count += 1 gen = counter() for _ in range(5): print(next(gen)) # 1, 2, 3, 4, 5
Note
Bemærk

Undlad at iterere over en uendelig generator med en almindelig for-løkke uden en stopbetingelse – den vil køre uendeligt og få dit program til at gå ned.

Opgave

Swipe to start coding

Generér unikke bruger-ID'er ved hjælp af en uendelig generatorfunktion. Funktionen id_generator() skal kontinuerligt producere identifikatorer som "ID_1", "ID_2" osv.

  1. Initialisér variablen count med værdien 1, da identifikatorer starter fra 1.
  2. Brug en uendelig while-løkke til at generere identifikatorer kontinuerligt.
  3. Brug yield til at returnere den aktuelle identifikator i formatet f"ID_{count}".
  4. Inkrementér count med 1 efter hver iteration.
  5. Initialisér generatorobjektet id_gen ved at kalde id_generator().

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 5
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

some-alt