Python 中的“yield”关键字有什么作用?
Python 的“yield”关键字用在生成器函数中,生成器函数是特殊函数充当迭代器。
生成器函数和迭代器
- 迭代器:一次生成一系列值的对象。
- 生成器函数:返回迭代器而不是特定值的函数。他们使用“yield”关键字按需生成值。
“yield”的功能
当调用生成器函数时:
- 生成器函数不会立即运行其代码。
- 相反,它返回一个生成器对象。
- 这个生成器对象是生成值的迭代器。
当迭代器用于“for”循环时:
- 循环第一次遇到“yield”语句时,生成器函数恢复执行并生成第一个值。
- 循环的后续迭代会导致生成器函数恢复并生成下一个值,直到没有更多值为止。
- 生成器函数在到达其逻辑末尾时终止或者遇到“return”语句。
示例代码说明
给定的代码片段在节点类中定义了一个名为 _get_child_candidates 的生成器函数。
- 该函数采用参数 distance、min_dist 和 max_dist。
- 如果左子节点和右子节点的距离满足
- 如果没有更多的孩子满足条件,则生成器函数终止。
在调用者代码中:
- 结果被初始化为空list.
- candidates 被初始化为包含当前节点的列表对象。
- 循环迭代候选对象。
- 对于每个节点,它检查距离,如果满足条件,则将其值添加到结果中。
- 然后扩展候选对象与从 _get_child_candidates 生成器获得的子节点。
- 循环继续,直到所有子节点都已完成
生成器的好处
- 内存效率:与列表不同,生成器不会将所有值存储在内存中。
- 惰性求值:仅在迭代生成器时才计算值,从而减少计算量开销。
- 对迭代的高级控制:您可以使用生成器函数中的逻辑控制值的生成。
以上是Python 的'yield”关键字如何在生成器函数中创建高效的迭代器?的详细内容。更多信息请关注PHP中文网其他相关文章!