Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Oneindige Generatoren | Specificatie van Returnwaarden van Functies
Python Functies Tutorial
Sectie 4. Hoofdstuk 5
single

single

Oneindige Generatoren

Veeg om het menu te tonen

Onthoud dat yield een generator pauzeert en deze hervat bij de volgende next()-aanroep. Tot nu toe hadden de generators die je hebt gezien een duidelijk eindpunt. Maar generators worden bijzonder krachtig wanneer ze worden gecombineerd met een oneindige lus – waarbij waarden oneindig worden geproduceerd zonder ze ooit in het geheugen op te slaan.

Oneindige generators met while True

Het gebruik van een while True-lus binnen een generator creëert een oneindige reeks – iets dat onmogelijk als lijst kan worden opgeslagen. De generator produceert alleen de volgende waarde wanneer next() wordt aangeroepen:

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

Hoe vaak je next() ook aanroept, de generator heeft altijd een nieuwe waarde klaar – hij loopt nooit vooruit en slaat geen waarden op in het geheugen.

Een oneindige generator beheersen

Omdat de generator oneindig doorgaat, moet je bepalen hoeveel waarden je wilt ophalen. De meest gebruikelijke manier is met een for-lus en 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
Opmerking

Nooit itereren over een oneindige generator met een gewone for-lus zonder stopvoorwaarde – dit blijft oneindig doorgaan en zal je programma laten vastlopen.

Taak

Veeg om te beginnen met coderen

Genereer unieke gebruikers-ID's met behulp van een oneindige generatorfunctie. De functie id_generator() moet voortdurend identificaties produceren zoals "ID_1", "ID_2", enz.

  1. Initialiseer de variabele count met de waarde 1, aangezien identificaties beginnen bij 1.
  2. Gebruik een oneindige while-lus om voortdurend identificaties te genereren.
  3. Gebruik yield om de huidige identificatie in het formaat f"ID_{count}" terug te geven.
  4. Verhoog count met 1 na elke iteratie.
  5. Initialiseer het generatorobject id_gen door id_generator() aan te roepen.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 5
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

some-alt