关于生成器的这个函数有点不明白
import randomdef get_data():
"""返回0到9之间的3个随机数"""
return random.sample(range(10), 3)
def consume():
"""显示每次传入的整数列表的动态平均值"""
running_sum = 0
data_items_seen = 0
while True:
data = yield
data_items_seen += len(data)
running_sum += sum(data)
print('The running average is {}'.format(running_sum / float(data_items_seen)))
def produce(consumer):
"""产生序列集合,传递给消费函数(consumer)"""
while True:
data = get_data()
print('Produced {}'.format(data))
consumer.send(data)
yield
if __name__ == '__main__':
consumer = consume()
consumer.send(None)
producer = produce(consumer)
for _ in range(10):
print('Producing...')
next(producer)
红色部分看不懂是什么意思,谁能给解释解释???
def get_primes(number):
while True:
if is_prime(number):
number = yield number
number += 1
yield 关键字返回 number 的值,而像 other = yield foo 这样的语句的意思是,“返回 foo 的值,这个值返回给调用者的同时,将 other 的值也设置为那个值”。你可以通过 send 方法来将一个值“发送”给生成器。
看看甲鱼哥的扩展阅读,这边解释就是你问的具体含义
只是我们这里的 :
data = yield
后面是空的 , 那么就是默认返回的是 None
当我们用 send 发射送给 生成器一个值时候,data 就会等于我们 send 的那个值,举个小例子:
def a():
while True:
x = yield
print(x)
c = a()
print(c.send(None))
print(c.send('---'))
结果会是:
None# 第一个 None 由 print(c.send(None)) 打印
--- # 这个由 print(x) 打印
None # 这个由 print(c.send('---')) 打印
这名......绝了 我真的是个好人 发表于 2020-6-30 12:43
这名......绝了
哈哈
页:
[1]