Praktiske Anvendelser af Generatorer: Virkelige Brugsscenarier
Generatorer kan anvendes som letvægts-kontekstadministratorer til effektiv håndtering af ressourcer, såsom databasetilkoblinger, filoperationer eller låsemekanismer. Med modulet contextlib kan generatorer håndtere ressourceallokering og oprydning problemfrit.
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}")
Effektiv behandling af store datamængder
Generatorer er ideelle til opbygning af datapipelines, der behandler store datasæt på en doven måde. Hvert trin i pipelinen kan implementeres som en generator, hvilket muliggør effektiv og hukommelsesvenlig behandling.
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. Hvad sker der, når en generatorfunktion løber tør for værdier at yield?
2. Hvad vil følgende kode udskrive?
3. Hvad gør følgende kode?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Fantastisk!
Completion rate forbedret til 3.13
Praktiske Anvendelser af Generatorer: Virkelige Brugsscenarier
Stryg for at vise menuen
Generatorer kan anvendes som letvægts-kontekstadministratorer til effektiv håndtering af ressourcer, såsom databasetilkoblinger, filoperationer eller låsemekanismer. Med modulet contextlib kan generatorer håndtere ressourceallokering og oprydning problemfrit.
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}")
Effektiv behandling af store datamængder
Generatorer er ideelle til opbygning af datapipelines, der behandler store datasæt på en doven måde. Hvert trin i pipelinen kan implementeres som en generator, hvilket muliggør effektiv og hukommelsesvenlig behandling.
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. Hvad sker der, når en generatorfunktion løber tør for værdier at yield?
2. Hvad vil følgende kode udskrive?
3. Hvad gør følgende kode?
Tak for dine kommentarer!