Có biểu thức máy phát chuyển tiếp thẳng có thể sinh ra phần tử vô hạn không?
Đây là một câu hỏi lý thuyết thuần túy. Không cần câu trả lời "thực tế" ở đây :)
Ví dụ, có thể dễ dàng tạo một máy phát hữu hạn:
my_gen = (0 for i in xrange(42))
Tuy nhiên, để tạo một cái vô hạn, tôi cần "gây ô nhiễm" không gian tên của mình bằng một hàm không có thật:
def _my_gen():
while True:
yield 0
my_gen = _my_gen()
Làm những việc trong một tệp riêng biệt và import
-ing sau đó không được tính.
Tôi cũng biết điều đó itertools.repeat
làm chính xác điều này. Tôi tò mò nếu có một giải pháp một lớp lót mà không có điều đó.
del _my_gen
nếu bạn không muốn nhầm lẫn giữa hai
my_gen
và sau đó thực hiệnmy_gen = my_gen()
.