协程与对象?

时间:2018-06-05 16:03:29

标签: python python-3.x coroutine

为什么使用一个coroutine,它是一个在调用之间维持内部状态的函数而不是一个也有内部状态的对象?

1 个答案:

答案 0 :(得分:1)

如果您习惯使用Java的Iterator界面,那么理由非常引人注目。

考虑一下:

def my_generator():
    yield "first"
    yield "second"
    yield from some_list()

把它写成一个类:

class MyIterator:
    def __init__(self):
        self.place = 0

    def __next__(self):
        if self.place == 0:
            result = "first"
            self.place += 1
        elif self.place == 1:
            result = "second"
            self.place += 1
            self.list_iter = iter(some_list())
        else:
            result = next(self.list_iter)  # Throws implicitly
        return result

更新你的状态只是样板,如果你能让编译器/解释器为你编写样板文件,为什么不呢?