作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个生成器,并且不想产生任何结果,之后我希望生成器的迭代停止,即 StopIteration
但我不确定用什么方法来完成这个任务。
我想到以下选项:
yield None
return
和
return
在我的发电机中。它们相等吗?或者我应该使用哪一个?
最佳答案
Are they equivalent?
没有。第二个甚至不是生成器(没有yield 表达式)
Which one should I use?
第一个还好。 return 语句以及显式生成的值 None
是多余的,可以删除(但它们也不会造成任何损害)。
def myfunc():
print("doing stuff before yielding the first (and only) value")
yield
print("doing more stuff before raising StopIteration")
如果您使用显式 return 语句,则返回的值将出现在 StopIteration
异常实例上(实际上是一个 value
属性)。
从语法上讲,您可以将代码放在return
语句之后,但它将无法访问。因此,没有必要这样做。
关于python - 屈服然后返回还是直接返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55736981/
我对现代JavaScript(ES8)有点陌生。异步产生的首选方法是什么,即使用await在事件循环的某些将来迭代中继续执行脚本?我看到了以下选项: async function yield1() {
我有一个 Duck 类,它有一个生成 block 的 initialize 方法: class Duck def initialize() if block_given? yi
我目前正在学习 F#,我非常喜欢 yield! (yield-bang) 运算符。不仅因为它的名字,当然也因为它的作用。 yield! 运算符基本上允许您从序列表达式中产生序列的所有元素。这对于组合枚
我是一名优秀的程序员,十分优秀!