Generaattoreiden Käytännön Sovellukset: Tosielämän Käyttötapaukset
Pyyhkäise näyttääksesi valikon
Generaattoreita voidaan käyttää kevyinä kontekstinhallitsijoina resurssien tehokkaaseen hallintaan, kuten tietokantayhteyksiin, tiedostojen käsittelyyn tai lukitusmekanismeihin. contextlib-moduulin avulla generaattorit voivat hoitaa resurssien varauksen ja vapautuksen saumattomasti.
1234567891011121314from contextlib import contextmanager @contextmanager def database_connection(): print("Opening database connection") connection = "Database Connection" # Simulated connection try: yield connection finally: print("Closing database connection") # Using the generator as a context manager with database_connection() as conn: print(f"Using {conn}")
Suurten tietomäärien tehokas käsittely
Generaattorit soveltuvat erinomaisesti dataputkien rakentamiseen, joissa suuria tietomääriä käsitellään laiskasti. Jokainen putken vaihe voidaan toteuttaa generaattorina, mikä mahdollistaa tehokkaan ja muistia säästävän käsittelyn.
12345678910111213141516171819202122232425262728293031323334353637383940import re # Stage 1: Read lines lazily def read_lines(text): for line in text.split("\n"): yield line # Stage 2: Filter non-empty lines def filter_lines(lines): for line in lines: if line.strip(): yield line # Stage 3: Extract words lazily def extract_words(lines): for line in lines: for word in re.findall(r'\w+', line): yield word # Stage 4: Transform words to lowercase def lowercase_words(words): for word in words: yield word.lower() # Input text text = """Generators are powerful tools They allow efficient data processing This pipeline demonstrates their usage""" # Build the pipeline lines = read_lines(text) filtered = filter_lines(lines) words = extract_words(filtered) lowercased = lowercase_words(words) # Process the data print("Processed words:") for word in lowercased: print(word)
1. Mitä tapahtuu, kun generaattorifunktiolla ei ole enää arvoja, joita yield palauttaisi?
2. Mitä seuraava koodi tulostaa?
3. Mitä seuraava koodi tekee?
Oliko kaikki selvää?
Kiitos palautteestasi!
Osio 6. Luku 5
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Osio 6. Luku 5