python 生成器的两个作用

def eat(name):
    print("{}该吃饭了".format(name))
    lst = []
    for i in range(1, 10000):
        x = yield lst
        lst.append(x)





g = eat('张三')   # 只是生成对象,不执行函数里面的代码
# print(g.__next__())  #第一次开始执行方法里面的代码并返回yied后面的值
print(g.send(None))
print(g.send('王二小')) #第二次执行将参数先传值给yield ,由yield将值转交给x,然后在执行相应的append操作,最后返回yield面的值。
print(g.send('王二小')) #第三次同第二次。

结果:
张三该吃饭了
[]
['王二小']
['王二小', '王二小']
posted @ 2020-06-04 19:26  梦乡尘子  阅读(332)  评论(0编辑  收藏  举报