Phá vỡ năng suất Python
Ngày đăng:
08/12/2022
Trả lời:
0
Lượt xem:
148
Xác định giá trị trả về từ hàm tạo thông qua giao thức iterator. Nếu bị bỏ qua, thay vào đó, 0 được trả lại Show 1 Không bắt buộcTruy xuất giá trị tùy chọn được truyền cho phương thức 2 của trình tạo để tiếp tục thực thiSự mô tảTừ khóa 3 tạm dừng thực thi chức năng trình tạo và giá trị của biểu thức theo sau từ khóa 3 được trả về trình gọi của trình tạo. Nó có thể được coi là một phiên bản dựa trên trình tạo của từ khóa 1 3 chỉ có thể được gọi trực tiếp từ hàm tạo chứa nó. Nó không thể được gọi từ các hàm lồng nhau hoặc từ các cuộc gọi lạiTừ khóa 3 khiến lệnh gọi phương thức 2 của trình tạo trả về một đối tượng 5 có hai thuộc tính. 6 và 7. Thuộc tính 6 là kết quả của việc đánh giá biểu thức 3 và 7 là 1, cho biết hàm tạo chưa hoàn thành đầy đủSau khi tạm dừng trên biểu thức 3, quá trình thực thi mã của trình tạo vẫn bị tạm dừng cho đến khi phương thức 2 của trình tạo được gọi. Mỗi khi phương thức 2 của trình tạo được gọi, trình tạo sẽ tiếp tục thực thi và chạy cho đến khi đạt đến một trong những điều sau
Nếu một giá trị tùy chọn được chuyển đến phương thức 2 của trình tạo, thì giá trị đó sẽ trở thành giá trị được trả về bởi hoạt động 3 hiện tại của trình tạoGiữa đường dẫn mã của trình tạo, các toán tử 3 của nó và khả năng chỉ định giá trị bắt đầu mới bằng cách chuyển nó tới 33, các trình tạo cung cấp sức mạnh và khả năng kiểm soát rất lớnCảnh báo. Thật không may, 2 là bất đối xứng, nhưng điều đó không thể tránh được. Nó luôn gửi một giá trị đến 3 hiện đang bị treo, nhưng trả về toán hạng của 3 sauví dụSử dụng năng suấtĐoạn mã sau là phần khai báo của hàm tạo ví dụ
Khi một hàm tạo được xác định, nó có thể được sử dụng bằng cách xây dựng một trình vòng lặp như được hiển thị
Bạn cũng có thể gửi một giá trị bằng 37 vào trình tạo. 38 đánh giá là một giá trị trả về trong cú pháp này 39 — mặc dù giá trị được truyền cho phương thức 2 của trình tạo bị bỏ qua khi lần đầu tiên 2 được gọi
Năng suất có dừng cho vòng lặp Python không?yield trong Python có thể được sử dụng giống như câu lệnh return trong một hàm. Khi làm như vậy, hàm thay vì trả về đầu ra, nó trả về một trình tạo có thể được lặp lại khi. Sau đó, bạn có thể lặp qua trình tạo để trích xuất các mục. Việc lặp lại được thực hiện bằng vòng lặp for hoặc đơn giản là sử dụng hàm next() .
Lợi nhuận Python có trả lại không?Khi câu lệnh năng suất Python được nhấn, chương trình sẽ tạm dừng thực thi hàm và trả về giá trị năng suất cho người gọi . (Ngược lại, hàm return dừng hoàn toàn việc thực thi hàm. )
Có năng suất chấm dứt một chức năng?Nếu một hàm có câu lệnh 'yield' thay vì câu lệnh 'return ', thì nó được gọi là hàm tạo hoặc trình tạo. 'câu lệnh lợi nhuận' sẽ không kết thúc hàm trong khi gọi hàm . Trong nhiều cuộc gọi, nó sẽ tạo đầu ra liên tiếp.
@yield dùng để làm gì?từ khóa năng suất được sử dụng để tạo hàm tạo . Một loại chức năng hiệu quả về bộ nhớ và có thể được sử dụng như một đối tượng lặp. Theo thuật ngữ của giáo dân, từ khóa suất sẽ biến bất kỳ biểu thức nào được cung cấp cùng với nó thành một đối tượng trình tạo và trả lại cho người gọi. |