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

single

bookInfinite Generators

Stryg for at vise menuen

Recall that yield pauses a generator and resumes it on the next next() call. So far, the generators you have seen had a clear stopping point. But generators become especially powerful when combined with an infinite loop – producing values indefinitely without ever storing them in memory.

Infinite Generators with while True

Using a while True loop inside a generator creates an infinite sequence – something that would be impossible to store as a list. The generator only produces the next value when next() is called:

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
copy

No matter how many times you call next(), the generator will always have a new value ready – it never runs ahead or stores values in memory.

Controlling an Infinite Generator

Since the generator runs forever, you need to control how many values you retrieve. The most common way is using a for loop with 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
copy
Note
Note

Never iterate over an infinite generator with a plain for loop without a stopping condition – it will run forever and crash your program.

Opgave

Swipe to start coding

Generate unique user IDs using an infinite generator function. The id_generator() function should continuously produce identifiers like "ID_1", "ID_2", etc.

  1. Initialize the variable count with the value 1, as identifiers start from 1.
  2. Use an infinite while loop to continuously generate identifiers.
  3. Use yield to return the current identifier in the format f"ID_{count}".
  4. Increment count by 1 after each iteration.
  5. Initialize the generator object id_gen by calling 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