Trung BìnhPython iconPython

Generator và `yield` là gì? Tại sao dùng?

Generator là function dùng yield trả về iterator — tính giá trị lazily, từng phần tử khi được yêu cầu.

Tiết kiệm bộ nhớ so với list vì không nạp toàn bộ dữ liệu vào RAM.

python
# List — toàn bộ vào RAM
squares_list = [x**2 for x in range(1_000_000)]

# Generator — lazy, từng phần tử khi cần
def squares_gen(n):
    for x in range(n):
        yield x**2

gen = squares_gen(1_000_000)
print(next(gen))  # 0 — chỉ tính khi gọi next()

Dùng khi: xử lý file lớn, streaming data, infinite sequences.

Xem toàn bộ Python cùng filter theo level & chủ đề con.

Mở danh sách Python