我在这里阅读以下示例:
>>> def double_inputs():
... while True: # Line 1
... x = yield # Line 2
... yield x * 2 # Line 3
...
>>> gen = double_inputs()
>>> next(gen) # Run up to the first yield
>>> gen.send(10) # goes into 'x' variable
如果我正确理解以上内容,似乎意味着Python实际上要等到next(gen)
“运行到”Line 2
函数主体为止。换句话说,在我们调用之前,解释器不会开始执行函数的主体next
。
double_inputs()
,它将如何知道它需要等到我调用next(gen)
才能进入循环while True
?正确。调用double_inputs
永远不会执行任何代码。它只是返回一个generator
对象。解析语句yield
时发现的表达式在主体中的存在会更改语句的语义以创建对象而不是对象。def
def
generator
function
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句