node函数 python_成为Python大牛必须要掌握的高端语法(附链接&代码)

03dc5bd0c5d18c0b88af5d46fc76ea5f.png

来源:机器学习算法与Python实战

本文约3000字,建议阅读5分钟

必要掌握的高端语法助你成为Python大牛。

这是stackoverflow上一个关于python中yield用法的帖子,这里翻译自投票最高的一个回答。

原文链接:

https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do

问题

Python中yield关键字的用途是什么?它有什么作用?

例如,我试图理解以下代码:

def _get_child_candidates(self, distance, min_dist, max_dist):    if self._leftchild and distance - max_dist < self._median:        yield self._leftchild    if self._rightchild and distance + max_dist >= self._median:        yield self._rightchild

这是调用者(caller):

result, candidates = [], [self]while candidates:    node = candidates.pop()    distance = node._get_dist(obj)    if distance <= max_dist and distance >= min_dist:        result.extend(node._values)    candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))return result

当调用方法_get_child_candidates时会发生什么?返回了一个列表(list)?还是返回了一个元素?然后被重复调用了吗?调用何时结束?

代码来自 Jochen Schulz (jrschulz), who made a great Python library for metric spaces.

回答

要想理解yield的作用,你必须了解什么是生成器(generators),在这之前,我们先来看可迭代对象(iterables)。

可迭代对象 (iterables)

当你创建了一个列表,你可以遍历这个列表读取它的每一个元素,逐个读取列表元素称为迭代(iteration)。

>>> mylist = [1, 2, 3]>>> for i in mylist:...    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值