Khóa học Phát triển Python Nâng cao
Chương 1
>
Cấp độ 1
Sách Mã
Level 1: Tạo Generator | Máy Sinh Máy sinh (Generators) là một tính năng mạnh mẽ trong Python cho phép tạo ra một chuỗi các giá trị theo cách hiệu quả. Không giống như việc xây dựng toàn bộ danh sách trong bộ nhớ, máy sinh tạo ra giá trị theo yêu cầu và chỉ lưu trữ giá trị tạm thời, điều này làm giảm việc sử dụng bộ nhớ. ### Cách Tạo Máy Sinh Bạn có thể tạo một máy sinh bằng cách sử dụng hàm với từ khóa `yield`. Khác với `return`, `yield` cho phép một hàm tạm ngưng và tiếp tục từ nơi nó đã dừng lại. Điều này hữu ích khi làm việc với các tập dữ liệu lớn hoặc luồng dữ liệu vô hạn. ```python # Một ví dụ máy sinh đếm từ 0 đến `n` def count_up_to(n): count = 0 while count <= n: yield count count += 1 ``` Trong ví dụ trên, hàm `count_up_to` là một máy sinh. Mỗi lần `yield` được gọi, hàm tạm dừng, và điều khiển được trả lại cho người gọi. Khi `next()` được gọi trên máy sinh, hàm sẽ tiếp tục từ nơi nó đã dừng lại. ### Sử Dụng Máy Sinh Để sử dụng máy sinh, chúng ta có thể sử dụng vòng lặp `for` hoặc gọi `next()`: ```python counter = count_up_to(5) # Sử dụng vòng lặp for or number in counter: print(number) # Hoặc sử dụng next() # counter = count_up_to(3) #print(next(counter)) # 0 #print(next(counter)) # 1 #print(next(counter)) # 2 ``` Khi sử dụng máy sinh, không cần phải lo lắng về việc đạt đến giới hạn bộ nhớ, vì giá trị chỉ được tạo ra khi cần.