生成器的工作原理
如果再次调用函数时。代码是从yield的位置继续往下执行。而不是从函数本身。
# 生成器一个特殊的迭代器,他没有__iter__ , __next__两个方法,但通过yield,同样实现了迭代器的功能,所以说生成器是一个特殊的迭代器 def create_num(all_count): print('1'.center(50, '-')) a, b = 0, 1 count = 0 while count < all_count: print('2'.center(50, '-')) yield a print('分割线'.center(50, '-')) a, b = b, a + b count += 1 print('4'.center(50, '-')) t1 = create_num(10) # 生成迭代器的对象 result = next(t1) print(result) result = next(t1)
调用生成器的两种方法