1cfd3bbb56
Topic_CSS/Topic_HTML/Topic_JavaScript/Topic_Prompt/Topic_Comfyui 등 기존 카테고리 폴더를 정리하고, Topic_Graphic/Dev 등 신규 산출물과 Topics 내부 세션/메모리 기록을 동기화.
4.6 KiB
4.6 KiB
id, title, category, status, verification_status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, created_at, updated_at, review_reason, merge_history, tags, raw_sources, applied_in, github_commit
| id | title | category | status | verification_status | canonical_id | aliases | duplicate_of | source_trust_level | confidence_score | created_at | updated_at | review_reason | merge_history | tags | raw_sources | applied_in | github_commit | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| python-generators | Python Generators | Programming_Language | draft | conceptual |
|
B | 0.9 | 2026-07-04 | 2026-07-04 |
|
|
Python Generators
🎯 한 줄 통찰 (One-line insight)
yield pauses a function and remembers its state instead of terminating it like return — letting a generator produce values one at a time on demand (e.g. an infinite Fibonacci sequence) without ever holding the full result set in memory. [S1]
🧠 핵심 개념 (Core concepts)
- Generator — a function that can pause and resume execution; calling it returns a generator object (an iterator) without running the body yet. [S1]
yieldkeyword — pauses the function, returns a value, and resumes from that exact point on the next call — unlikereturn, which terminates. [S1]- Memory efficiency — values are produced on-the-fly instead of building the whole collection in memory. [S1]
next()— manually advances a generator one step. [S1]StopIteration— raised when a generator has no more values to yield. [S1]- Generator expression —
(x*x for x in range(5))— same idea as list comprehension but with()instead of[], producing a generator instead of a list. [S1] send()— sends a value INTO a running generator at its current yield point. [S1]close()— stops the generator; anyfinallyblock inside still runs. [S1]
🧩 추출된 패턴 (Extracted patterns)
- Infinite generator via
while True—def fibonacci(): a, b = 0, 1; while True: yield a; a, b = b, a+bcan generate the Fibonacci sequence forever, since nothing forces the whole sequence to materialize at once — only consumed as far as the caller iterates. [S1] - Priming a generator before
send()— the generator must be advanced once withnext(gen)beforesend()can inject a value, sincesend()resumes execution at the currently-pausedyield. [S1]
📖 세부 내용 (Details)
- Basic generator:
def my_generator(): yield 1; yield 2; yield 3; for value in my_generator(): print(value). [S1] - Counting generator:
def count_up_to(n): count = 1; while count <= n: yield count; count += 1. [S1] - Memory-efficient large sequence:
def large_sequence(n): for i in range(n): yield i— a million-item generator never builds a million-item list. [S1] - Manual iteration:
gen = simple_gen(); print(next(gen)); print(next(gen)). [S1] - Generator expression vs list comprehension:
[x*x for x in range(5)]vs(x*x for x in range(5)). [S1] - Infinite Fibonacci generator:
def fibonacci(): a, b = 0, 1; while True: yield a; a, b = b, a + b. [S1] send():gen = echo_generator(); next(gen); gen.send("Hello"). [S1]close()withfinally: generator'sfinallyblock runs on.close(). [S1]
⚖️ 모순 및 업데이트 (Contradictions & updates)
소스에서 모순되는 정보는 발견되지 않음.
🛠️ 적용 사례 (Applied in summary)
현재 발견된 실제 적용 사례가 없습니다 — 대용량 데이터 순회, 무한 시퀀스 생성처럼 메모리 효율이 중요한 상황에서 표준적으로 쓰인다. [S1]
💻 코드 패턴 (Code patterns)
Infinite Fibonacci generator (Python):
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
gen = fibonacci()
for _ in range(100):
print(next(gen))
✅ 검증 상태 및 신뢰도
- 상태: draft
- 검증 단계: conceptual
- 출처 신뢰도: B (W3Schools — widely used educational reference, not a primary standards body)
- 신뢰 점수: 0.90
- 중복 검사 결과: 신규 생성 (New discovery)
🔗 지식 그래프 (Knowledge Graph)
- 상위/루트: Python Tutorial
- 관련 개념: Python Iterators, Python Recursion, Python Lists Comprehension
- 참조 맥락: 메모리 효율적인 지연 평가(lazy evaluation) 순회의 표준 도구.
📚 출처 (Sources)
- [S1] W3Schools — Python Generators — https://www.w3schools.com/python/python_generators.asp
📝 변경 이력 (Change history)
- 2026-07-04: Initial draft synthesized from the W3Schools "Python Generators" page (Astra wiki-curation, P-Reinforce v3.1 format).