In [1]: L =[ x*2for x inrange(5)]
In [2]: L
Out[2]:[0,2,4,6,8]
In [3]: G =( x*2for x inrange(5))
In [4]: G
Out[4]:<generator object<genexpr> at 0x7f626c132db0>
defcreate_num(all_num):
a, b =0,1
current_num =0while current_num < all_num:# print(a)# 如果一个函数中有yield语句# 那么这个就不在是函数,而是一个生成器的模板yield a
a, b = b, a+b
current_num +=1return"ok...."
obj = create_num(5)whileTrue:try:
ret =next(obj)print(ret)except Exception as result:print(result)break
defcreate_num(all_num):
a, b =0,1
current_num =0while current_num < all_num:
ret =yield a
print(">ret>", ret)
a, b = b, a+b
current_num +=1
obj = create_num(10)# obj.send(None)# send一般不会放到第一次启动生成器,如果非要这样做那么传递None
ret =next(obj)print(ret)# send里面的数据会 传递给第6行,当做yield a的结果,然后ret保存这个结果# send的结果是下一次调用yield时 yield后面的值
ret = obj.send("hahahha")print(ret)