关于yield的一些 疑问

def a():
    print("begin")
    yield 3
    print("end")
    yield 30


b=a()

print(a().__next__())
print(a().__next__())
print('##################')
print(b.__next__())
print(b.__next__())

结果:

begin
3
begin
3
##################
begin
3
end
30

问题: 不明白为什么直接调用a()不好用。

个人理解: a()也是个函数,只不过比较特殊,是一个生成器函数,通过看IBM关于yield的文章,了解到a(),返回的是一个迭代器对象,那这个对象我直接调用next()方法和我把a()给一个变量b再掉用b.next()有什么不一样吗?

3 comments