答案 0 :(得分:2)
这意味着您不能执行以下操作:
sum(yield x*x for x in range(10))
这显然是因为显式yield
与所允许的sum(x*x for x in range(10))
中的隐式收益交互的方式很难推理,而且一旦开始使用诸如{ {1}}和generator.send
。
答案 1 :(得分:1)
这是指在生成器表达式中使用yield表达式,例如:
>>> g = ((yield x**2) for x in [1,2,3])
>>> list(g)
[1, None, 4, None, 9, None]
或者:
>>> t = "hello", "world"
>>> g = ((yield from t) for x in 'xyz')
>>> list(g)
['hello', 'world', None, 'hello', 'world', None, 'hello', 'world', None]
此语法为deprecated in Python 3.7,在Python 3.8+中将为SyntaxError
。有关更多详细信息,请参见bpo10544。