#--coding=utf-8--
#生成器实现斐波那契数列
def num(Num):
print("---------------1--------------------")
a, b = 0, 1
cur = 0
while cur < Num:
#print(a)
print("---------------2---------------------")
yield a # 有yield则是一个生成器
print("---------------3---------------------")
a, b = b, a+b
cur += 1
print("---- ----------4----------------------")
return "ok!!!!"
if __name__ == "__main__":
# 如果调用num函数,发现函数中有yield,则此时不是调用函数,而是创建一个生成器
obj1 = num(10)
obj2 = num(2)
print(obj1)
while True:
try:
ret = next(obj2)
print(ret)
except StopIteration as exp:
print(exp.value)
break
#调用生成器
#for a in res:
# print(a)
#--coding=utf-8--
def num(Num):
a, b = 0, 1
cur = 0
while cur < Num:
ret = yield a # 有yield则是一个生成器
print("ret的值为:", ret)
a, b = b, a+b
cur += 1
if __name__ == "__main__":
obj1 = num(10)
print(next(obj1)) # 到yield后会停止,然后返回a的值
# 调用send前必须确保生成器被调用了,否则报错
# TypeError: can't send non-None value to a just-started generator
ret = obj1.send("hahahaha") #从上一步停止的yield继续执行,并将hahahaha传递给ret,然后打印
print("下一步yield a的值为:", ret)