生成器:是自定义的迭代器(自己用python代码写的迭代器),函数中见到yield的就是生成器

那么yield前后的变量又该怎么理解

看例子一

def counter(name):
    print('%s ready to count'%name)
    num_list=[]
    while True: #这个语句的作用是循环利用yield,这样的话对象就可以无限传值了
        #yield前的变量是接收值的
        num=yield '现在的列表是%s'%num_list #yield后面的变量会打印处理
        num_list.append(num)
        print('%s start to count %s'%(name,num))

e=counter('xincheng')
print(e.send(None)) #或者 next(e)
print(e.send('1'))
print(e.send('2'))
for i in range(3,10):
    print(e.send(i))

例子一打印结果为:

xincheng ready to count
现在的列表是[]
xincheng start to count 1
现在的列表是['1']
xincheng start to count 2
现在的列表是['1', '2']
xincheng start to count 3
现在的列表是['1', '2', 3]
xincheng start to count 4
现在的列表是['1', '2', 3, 4]
xincheng start to count 5
现在的列表是['1', '2', 3, 4, 5]
xincheng start to count 6
现在的列表是['1', '2', 3, 4, 5, 6]
xincheng start to count 7
现在的列表是['1', '2', 3, 4, 5, 6, 7]
xincheng start to count 8
现在的列表是['1', '2', 3, 4, 5, 6, 7, 8]
xincheng start to count 9
现在的列表是['1', '2', 3, 4, 5, 6, 7, 8, 9]
例子一结果

相关文章:

  • 2022-12-23
  • 2021-10-28
  • 2021-11-27
  • 2022-01-04
  • 2021-08-02
  • 2021-11-07
  • 2021-11-26
  • 2022-12-23
猜你喜欢
  • 2021-08-20
  • 2021-09-07
  • 2021-07-31
  • 2022-02-28
  • 2021-08-13
  • 2021-11-02
  • 2021-05-31
相关资源
相似解决方案