首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么生成器不返回下面的值?

生成器不返回下面的值的原因可能有以下几种情况:

  1. 生成器函数中使用了yield语句,但没有被调用或迭代:生成器函数通过yield语句产生一个值,并且暂停执行,等待下一次调用或迭代。如果生成器函数中的yield语句没有被调用或迭代,那么生成器就不会返回任何值。
  2. 生成器函数中的yield语句被多次调用或迭代:生成器函数中的yield语句可以被多次调用或迭代,每次调用或迭代都会产生一个新的值。如果生成器函数中的yield语句被多次调用或迭代,但只有部分值被消耗或获取,那么生成器就不会返回下面的值。
  3. 生成器函数中存在条件判断或循环控制:生成器函数中可能存在条件判断或循环控制语句,这些语句可能导致生成器在某些条件下不返回下面的值。例如,如果生成器函数中存在一个条件判断语句,当条件不满足时,生成器就不会返回下面的值。
  4. 生成器函数中存在异常抛出:生成器函数中可能存在异常抛出的情况,当异常被抛出时,生成器就会停止执行并终止返回值。

总结起来,生成器不返回下面的值可能是因为生成器函数中的yield语句没有被调用或迭代、yield语句被多次调用或迭代但只有部分值被消耗或获取、存在条件判断或循环控制导致不返回值、存在异常抛出等原因。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python生成器传参数及返回原理解析

一.生成器简介 在python中,带yield的方法不再是普通方法,而是生成器,它的执行顺序不同与普通方法....普通方法的执行是从头到尾,最后return返回,或者没有返回 生成器是到yield就返回yield之后的,然后阻塞,等待next()/send()继续调起生成器 二.next()/send()的异同...: next()/send()都可以调起生成器 next()只能调起生成器返回,send()还可以对生成器进行传参数,与正常的理解不同,yield表达式左侧的是send()方法传进来的参数 还有一个有意思的点...,第一次send()的时候要求只能send(None) 三.生成器的执行顺序 在yield这一行代码的执行逻辑是这样的,等号右边的yield r先执行,将r返回,阻塞… 等到下次生成器再被调起的时候,...yield把传入的参数给n,再继续执行下面的代码,知道yield继续返回… def consumer(): r = '' while True: n = yield r

73731

【Rust问答】关于函数写return时候返回的疑惑

unit (),而if里面的0却是integer,所以报错了 我知道下面2种做法可以编译通过: 把1放进else里面 在0前面显式的加上return 现在问题来了: 这个编译不通过的函数,我标注了返回类型为...i32,而且函数体内怎么看返回的也不是()啊,为什么编译器会认为返回的是()类型呢?...希望各位大佬指点一小弟!...--- javasaint 2019-12-18 17:57 我来分析一,rust初学者,可能术语用得不太恰当,但差不多应该是这个意思 fn r(n: i32) -> i32 { if n > 0 {...0 } 1 } rust编译器认为函数体是由一个语句和表达式组成的 if n > 0 { 0 } 和 1 因为没有else,所以它不认为if 代码块是表达式的一部份 所以做为函数返回的是 1 这个表达式

2.7K20

枚举很好用啊,为啥阿里建议返回用枚举?

为什么会被嫌弃呢?我们先来看看阿里开发手册关于枚举使用的建议 ? 从手册可以看出,定义和使用枚举,阿里开发手册都是支持的,但是为啥,返回就要反对了呢?...可是为什么返回和参数进行了区分呢,如果兼容,那么两个都有问题,怎么允许参数可以有枚举。当时的考虑,如果参数也不能用,那么枚举几乎无用武之地了。...但如果是接口返回,就比较恶心了,因为解析回来的这个枚举,可能本地还没有,这时就会抛出序列化异常。...返回:Weather guess(参数),那么对方运算后,返回一个SNOWY,本地枚举里没有这个,傻眼了。 不过,另一位网友Brian的回答也很通俗易懂 枚举,就是把已知的全部罗列出来。...但作为返回,情况就反过来了。我先告诉你这些这些可以有,然后你规定这些这些可以有,除此之外都没有。但是,是我说了算而不是你,所以你的规定狗屁不是。

2.1K20

枚举很好用啊,为啥阿里建议返回用枚举?

为什么会被嫌弃呢?我们先来看看阿里开发手册关于枚举使用的建议 ? 从手册可以看出,定义和使用枚举,阿里开发手册都是支持的,但是为啥,返回就要反对了呢?...可是为什么返回和参数进行了区分呢,如果兼容,那么两个都有问题,怎么允许参数可以有枚举。当时的考虑,如果参数也不能用,那么枚举几乎无用武之地了。...但如果是接口返回,就比较恶心了,因为解析回来的这个枚举,可能本地还没有,这时就会抛出序列化异常。...返回:Weather guess(参数),那么对方运算后,返回一个SNOWY,本地枚举里没有这个,傻眼了。 不过,另一位网友Brian的回答也很通俗易懂 枚举,就是把已知的全部罗列出来。...但作为返回,情况就反过来了。我先告诉你这些这些可以有,然后你规定这些这些可以有,除此之外都没有。但是,是我说了算而不是你,所以你的规定狗屁不是。

1.8K20

Go语言必须支持多返回函数,你知道为什么吗?

大多数编程语言的函数(方法)都只能返回一个,这种函数也是在数学中的标准定义,如y = f(x),后面的f(x)不管多复杂,y永远只有一个。...不过有少数编程语言,函数可以返回多个,Go和Python就是这样的语言。其实这种返回多值的方式对于有些编程语言,如Python,就是一个语法糖。不过对于go来说,还真需要,那么为什么需要呢?...如前面给出的calc函数,只需要a+b和a-b的,那么可以用下面的代码调用calc函数。...当然,就算有命名返回,return语句也可以返回具体的,只是会覆盖前面的给命名返回变量赋的,代码如下: package main func calc(a int, b int) (sum int...现在来回答本文最开始的提出的问题:Go语言的函数为什么需要返回多个

1.5K30

C语言中的函数为什么只能有一个返回输出?怎么实现多个输出?

这是典型的C语言中函数模块中的返回问题,算是常见的语法细节,很多人觉得C语言已经过时了,只能代表着这类人还不算是真正的技术人员,在嵌入式领域C语言依然充当着非常重要的角色,C语言在很多领域还是首选编程语言...常见的C语言难点有指针,结构体,函数,递归,回调,数组等等,看起来没多少东西,每个概念都能延伸很多功能点,今天的题目其实就是函数模块中的返回的问题,面向对象编程的基本单元就属于函数,函数包括参数输入,...具体功能实现,最后是结果的输出,也就是这个题目的返回,在正常情况函数的返回只有一个,但在实际编程中需要用到多个,在设计时候还是归结成一类,如果类型相近可以弄成数组方式,如果类型不太一致直接放在结构体中执行...现在从语法规则出发列举几个实现多个返回例子: ?...,如果函数返回是个指针的话,就能把整个结构体里面的内容返回出来,同样能够达到返回多个数值的作用,这种在平常的编程过程中用的最多,C语言中使用最频繁的关键点就是指针了,但也是很多初学者最不好理解的知识点

7.1K30

Mybatis查询结果为空时,为什么返回为NULL或空集合?

开始前我们先看一个问题: 你是否曾经在学习 Mybatis 的时候跟我有一样的疑问,什么情况返回 null,什么时候是空集合,为什么会是这种结果?那么你觉得上述这种回答能说服你嘛?...看完这篇你就知道查询结果为空时候为什么集合会是空集合而不是 NULL,而对象为什么会是 NULL 了。 PS:对过程不感兴趣的可以直接跳到最后看结论。...MyBatis 作为一个通用的持久化框架,不仅要支持常用的基础功能,还要对其他使用场景进行全面的支持。...handleRowValuesForSimpleResultMap() 方法处理包含嵌套映射的简单 ResultMap。...如果返回是 Java 集合类型,如 List、Map,会先初始化(new 一个集合对象),再把结果添加进去;如果返回是普通对象,查询不到时,返回是 null。

5.1K20

Go 语言为什么建议 append 追加新元素使用原切片变量接收返回

本文我们介绍一 Go 语言为什么建议 append 追加新元素使用原切片变量接收返回?...在 Part 02 示例代码中,我们三次使用 append 参数追加新元素到切片 a 的操作,接收返回的变量都不同。...第二次操作时,因为 append 生成一个新切片,将原切片 a 的拷贝到新切片,并且将新元素在原切片a[len(a)] 长度的位置开始追加,使用变量 b 接收 append 返回 [1 2],所以变量...第三次操作时,同样 append 生成一个新切片,将原切片 a 的拷贝到新切片,并且将新元素在原切片a[len(a)] 长度的位置开始追加,使用变量 c 接收 append 返回 [1 3],所以变量...04 总结 本文我们介绍 Go 语言中使用内置函数 append 追加新元素的一个“坑”,建议读者朋友们使用原切片变量接收返回

75930
领券