Avansert Python-utviklingskurs
Kapittel 1
>
Nivå 1
Kodebok
Level 1: Opprette en generator | ```python # Definisjon av en generatorfunksjon def tell_til_tre(): yield 1 yield 2 yield 3 ``` ## Hva er generatorer? Generatorer er en spesiell type iterators som forenkler opprettelsen av iterators med en `yield`-uttalelse i stedet for en `return`-uttalelse. En generator returnerer et objekt (iteratoren) som vi kan iterere over én verdi om gangen. ### Hvordan fungerer de? En kodelinje med `yield` fungerer nesten som en `return`-uttalelse. For hver `yield`-uttalelse, "returnerer" generatoren verdien foran `yield` og pausere. Det er først når vi kaller neste() på generatoren at kjøringen fortsetter fra der den sist ble stoppet. Eksempel: ```python # Bruker generatorfunksjonen generator = tell_til_tre() print(next(generator)) # Output: 1 print(next(generator)) # Output: 2 print(next(generator)) # Output: 3 ``` ### Fordeler med generatorer - **Mindre minnebruk**: Sammenlignet med lister, bruker generatorer langt mindre minne fordi de ikke lagrer hele sekvensen. I stedet genererer de hver verdi etter behov. - **Late evaluation**: De beregner verdier etter behov, noe som kan være mer effektivt for store datasett. ### Typiske brukstilfeller Generatorer er nyttige når vi ønsker å iterere over en stor datamengde uten å belaste minnet. For eksempel når vi leser store filer linje for linje, eller når vi beregner verdier i en stor matematisk sekvens. Her er et eksempel: ```python # Lager en uendelig generator def uendelig_generator(): n = 0 while True: yield n n += 1 # Bruker den uendelige generatoren for i in uendelig_generator(): print(i) if i == 10: break ``` Generatorer er en kraftfull måte å spare tid og ressurser i programmering, spesielt når vi arbeider med store datasamlinger eller sekvenser.