Trình tạo hàm Python
Trình tạo chỉ là một hàm trả về một đối tượng có thể lặp lại mà chúng ta có thể lặp lại (mỗi lần một giá trị). Hơn nữa, hàm tạo có một điểm khác biệt chính so với hàm thông thường. Nó có câu lệnh Show Để xây dựng một trình vòng lặp trong Python, bạn phải làm rất nhiều việc. Bạn phải triển khai một lớp với phương pháp ma thuật o 0 khi không có giá trị nào được trả vềTrình tạo là một cách rất đơn giản để tạo trình vòng lặp vì trình tạo tự động thực hiện tất cả các bước này kế hoạch nội dung
Một hàm trở thành một hàm sinh nếu nó chứa ít nhất một câu lệnh o 1 (nó có thể chứa một số yield và thậm chí là return ). Để làm cho nó rõ ràng, yield và return trả về một số giá trị từ một hàm. Vì vậy, bạn chỉ cần xây dựng hàm với ít nhất một_______21_______Sự khác biệt chính là câu lệnh 2. Sự khác biệt giữa Hàm tạo và Hàm thông thường Chúng ta hãy xem tất cả sự khác biệt giữa hàm tạo và hàm thông thường
Ví dụ sau minh họa tất cả những điểm này đầu ra 1 -- This is first [100, 324, 169, 529] 4 là một hàm tạo với một số câu lệnh yield Một điều thú vị cần lưu ý là giá trị của biến [100, 324, 169, 529] 6 được ghi nhớ giữa mỗi lần gọiKhông giống như các hàm thông thường, các biến cục bộ không bị hủy khi hàm mang lại. Hơn nữa, một đối tượng trình tạo chỉ có thể được lặp lại một lần Để bắt đầu lại quy trình, bạn phải tạo một đối tượng trình tạo khác bằng cách sử dụng thứ gì đó như [100, 324, 169, 529] 7Điểm cuối cùng cần lưu ý là bạn có thể sử dụng trực tiếp các trình tạo với ____2___8 vòng lặp Điều này là do vòng lặp [100, 324, 169, 529] 8 nhận một trình vòng lặp và lặp lại nó bằng cách sử dụng hàm [100, 324, 169, 529] 2. Nó tự động kết thúc khi o 0 được nâng lên3. Máy phát điện có vòng lặp Ví dụ trên không có ý nghĩa gì cả và tôi đã chỉ ra nó để bạn hiểu quy trình làm việc của máy phát điện Thông thường, các chức năng của trình tạo được thực hiện với một vòng lặp có điều kiện kết thúc phù hợp Vì vậy, hãy xem ví dụ sau đầu ra o Mã đã sử dụng hàm 100 2 để đảo ngược chuỗi nhận được bằng cách sử dụng vòng lặp [100, 324, 169, 529] 84. biểu thức trình tạo Có thể dễ dàng tạo các trình tạo đơn giản bằng cách sử dụng các biểu thức trình tạo. Điều này giúp xây dựng máy phát điện dễ dàng Tương tự như các hàm lambda tạo các hàm ẩn danh, các biểu thức trình tạo tạo các hàm tạo ẩn danh Cú pháp cho biểu thức trình tạo tương tự như cú pháp hiểu danh sách. Tuy nhiên, dấu ngoặc vuông được thay thế bằng dấu ngoặc tròn Sự khác biệt chính giữa cách hiểu danh sách và biểu thức trình tạo là cách hiểu danh sách tạo ra toàn bộ danh sách trong khi biểu thức trình tạo tạo ra từng mục một Họ thực hiện lười biếng (chỉ sản xuất các mặt hàng khi được yêu cầu). Do đó, biểu thức trình tạo hiệu quả hơn nhiều về bộ nhớ so với cách hiểu danh sách tương đương đầu ra [100, 324, 169, 529] Ở trên, chúng ta có thể thấy rằng biểu thức trình tạo không tạo ra kết quả được yêu cầu ngay lập tức. Thay vào đó, nó trả về một đối tượng trình tạo, chỉ tạo ra các mục theo yêu cầu Đây là cách bắt đầu nhận vật phẩm từ máy phát điện Khi bạn chạy đoạn mã trên, bạn nhận được đầu ra sau 100 Biểu thức trình tạo có thể được sử dụng làm đối số hàm. Khi sử dụng theo cách này, dấu ngoặc tròn có thể được loại bỏ sum(x**2 for x in list_numbers)5. Sử dụng máy phát điện Có một số lý do tại sao máy phát điện mạnh mẽ để thực hiện 5. 1. Dễ để thực hiệnTrình tạo có thể được triển khai rõ ràng và chính xác so với đối tác lớp trình lặp của chúng. Dưới đây là một ví dụ về việc triển khai chuỗi 2 lũy thừa bằng cách sử dụng lớp lặp Đoạn mã trên dài và khó hiểu. Bây giờ, hãy làm tương tự bằng cách sử dụng hàm tạo Khi các trình tạo tự động theo dõi chi tiết, việc triển khai trở nên ngắn gọn và rõ ràng hơn nhiều 5. 2. Bộ nhớ hiệu quả Một hàm thông thường để trả về một chuỗi sẽ tạo toàn bộ chuỗi trong bộ nhớ trước khi trả về kết quả. Điều này là quá mức cần thiết nếu số lượng mục trong chuỗi là rất lớn Việc triển khai trình tạo các chuỗi như vậy thân thiện với bộ nhớ và được ưu tiên hơn vì nó chỉ tạo ra một mục tại một thời điểm 5. 3. Đại diện cho dòng vô tận Trình tạo là một phương tiện tuyệt vời để biểu diễn luồng dữ liệu vô hạn. Các luồng vô hạn không thể được lưu trữ trong bộ nhớ và vì các trình tạo chỉ tạo ra một mục tại một thời điểm nên chúng có thể biểu thị một luồng dữ liệu vô hạn Hàm tạo sau đây có thể tạo (về lý thuyết) tất cả các số chẵn 5. 4. Máy phát điện đường ống Nhiều máy phát điện có thể được sử dụng để dẫn một loạt các hoạt động. Điều này được minh họa tốt nhất với một ví dụ Giả sử bạn có một trình tạo tạo ra các số trong chuỗi Fibonacci. Và chúng tôi có một trình tạo khác để bình phương số Nếu chúng ta muốn tìm tổng bình phương của các số trong chuỗi Fibonacci, chúng ta có thể thực hiện theo cách sau bằng cách nối kết đầu ra của các hàm của trình tạo với nhau đầu ra 1120149658760 Đường ống này hiệu quả và dễ đọc, đây là một cách tiếp cận tuyệt vời 6. Phần kết luậnHãy kết thúc việc này. Bây giờ bạn biết
P. S. Nếu bạn thích bài viết này, hãy theo dõi tôi, nhấp vào “Vỗ tay” vài lần và để lại phản hồi. Chúc may mắn và lập trình hiệu quả. Cảm ơn Hàm so với trình tạo Python là gì?Trình tạo là một lớp hàm đặc biệt giúp đơn giản hóa tác vụ viết trình vòng lặp. Các hàm thông thường tính toán một giá trị và trả về giá trị đó, nhưng các trình tạo trả về một trình vòng lặp trả về một luồng giá trị . Chắc chắn bạn đã quen với cách hoạt động của các lệnh gọi hàm thông thường trong Python hoặc C.
Range() trong Python có phải là trình tạo không?range là một lớp các đối tượng có thể lặp lại bất biến. Hành vi lặp lại của chúng có thể được so sánh với danh sách s. bạn không thể gọi trực tiếp cho họ; . Vì vậy, không, phạm vi không phải là trình tạo .
Tại sao nên sử dụng trình tạo trong Python?Trình tạo cho phép bạn tạo trình lặp theo cách rất Pythonic . Trình lặp cho phép đánh giá chậm, chỉ tạo phần tử tiếp theo của đối tượng có thể lặp khi được yêu cầu. Điều này hữu ích cho các tập dữ liệu rất lớn. Trình lặp và trình tạo chỉ có thể được lặp lại một lần.
Trình tạo Python có lười không?Điểm chính. động lực và sử dụng đằng sau máy phát điện
. Máy phát điện lười biếng . họ chỉ mang lại giá trị khi được hỏi rõ ràng. Bạn có thể cung cấp đầu ra của một trình tạo cho đầu vào của một trình tạo khác để tạo thành các đường dẫn dữ liệu. |