# 启动生成器两种方式:
# 1. next()
# 2.send
# 普通用法
def func():
yield test1
yield test2
yield test3
if __name__ == __main__:
# 启动生成器两种方式:
# 1. next()
# 2.send
f = func()
print(next(f))
print(next(f))
print(next(f))
# 其他用法
def func():
# 1.可以产出值 2.可以接收值(此值是调用方传入的)
result = yield "http://www.baidu.com" #使用send方法才能使其运行到这行代码,next并不会
yield test2
# 此处为下一个yield位置
yield test3
if __name__ == __main__:
f = func()
#调用send发送非None值之前(f.send("111")),必须启动一次生成器;
# 方式一:f.send(None) 方式二:next(f)
res = next(f) # 运行时此处不显示结果,因为没有print
# 运行如下代码会打印出传入的 str值和 test2(第一个yield值)
str = "message“
print(f.send(str)) # send可以传递值进入生成器内部,同时还可以重启生成器执行到下一个yield位置