对产量的基本理解
这个问题在这里已经有了答案:
yield
将控制权返回给调用者作用域(函数或方法),就像返回一样 - 但不是销毁当前作用域,而是使用局部变量及其值保存。
当再次调用迭代器的“下一个”方法( for
语句会隐式执行)时,会检索执行产出的范围,并从该点继续执行,并使用相同的变量。
实际上,yield表现为表达式,如果不是调用next
方法,而是外部函数调用send
,则传递给send
的值是yield
表达式返回的值。
(关于代码对象,局部变量和全局变量以及正在运行哪条线的这些信息都保存在一个“栈帧”对象中,并且在Python中它甚至可以作为任何其他对象被寻址并被内省处理)
链接地址: http://www.djcxy.com/p/1553.html