首页 > 其他分享 >yield关键字和生成器

yield关键字和生成器

时间:2023-12-13 16:34:58浏览次数:31  
标签:generator 生成器 yield 关键字 my eat

yield关键字和生成器

【1】列表元组生成式

num_list=[i**2 for i in range(10)]#[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

【2】yield关键字

 def generator():
     yield 1
     yield 2
     yield 3
generator=generator()
print(next(generator))
def eat():
    print('开始吃饭')
    while True:
        food=yield
        print(f'我吃的是{food}')

my_eat=eat()#把函数变成生成器
my_eat.__next__() #取值 取到第一次遇到yield,然后停住
## 1. 调用了__next__ 2. 传参数
my_eat.send('汉堡')
my_eat.send('酸奶')
my_eat.send('鸡腿')
#开始吃饭
#我吃的是汉堡
#我吃的是酸奶
#我吃的是鸡腿

【3】yield与return对比

yield
	1. 可以有返回值
    2. 函数遇到yield不会结束,只会'停住'
    3. yield关键字把函数变成了生成器,支持迭代取值了
return
	1. 可以有返回值
    2. 遇到return关键字直接结束函数运行

标签:generator,生成器,yield,关键字,my,eat
From: https://www.cnblogs.com/banchengyanyu/p/17899354.html

相关文章

  • 迭代器、生成器
    【一】迭代器迭代器(Iterator)是Python中用于遍历可迭代对象的一种机制。可迭代对象是指那些可以被迭代的对象,例如列表、元组、字符串、集合、字典。迭代器提供了一种顺序访问可迭代对象元素的方式,而不需要事先知道对象的内部结构。迭代器是通过实现两个特殊方法来工作的:__iter......
  • 生成器
    生成器Python中的生成器是一种特殊的迭代器,可以在需要时生成数据,而不必提前从内存中生成并存储整个数据集。通过生成器,可以逐个生成序列中的元素,而无需一次性生成整个序列。生成器在处理大数据集时,具有节省内存、提高效率的特点。迭代器不一定是生成器,生成器一定是迭代器。......
  • explicit关键字
    1.隐式类型转换在C++11前,对于类的使用,存在隐式类型转化的情况,实质上是构造函数的隐式调用。下面是一个例子:EG:代码:#include<iostream>usingnamespacestd;classTest{public:intx;inty;Test(intx=1,inty=2):x(x),y(y){cout<<"parameter......
  • 迭代器和生成器
    迭代器什么是迭代器迭代器指的是迭代取值的工具,迭代是一个重复的过程,每次重复都是基于上一次的结果而继续的,单纯的重复并不是迭代。为何要有迭代器迭代器是用来迭代取值的工具,而涉及到把多个值循环取出来的类型有:列表,字符串,元组,字典,集合,打开文件文件是可迭代对象,也是迭代器......
  • Angular Component 内 set 关键字的使用
    "set"关键字在Angular组件的TypeScript代码中通常用于创建和定义类的属性的setter方法。它是一种特殊的方法,负责设置类的私有成员变量的值。通过使用"set"关键字,我们可以在设置属性值时执行一些额外的逻辑,如输入验证、触发事件等。让我们通过一个简单的例子来说明"set"关键字的用......
  • 命名关键字参数
    命名关键字参数(1)在函数内判断在定义了**kwargs参数后,函数调用就可以传入任意的关键字参数key=value如果函数体代码的执行需要依赖某个key,就必须在函数内进行判断defregister(name,age,**kwargs):if'sex'inkwargs:#有sex参数passif'heig......
  • 关键字 开发-11 yaml文件中添加fixture功能
    前言每一条pytest用例都可以添加fixture的前置功能,只需要在用例的参数中传入在conftest.py文件中写的函数的名称就可以实现每条用例的前置和后置。1.yaml文件中加入fixture的功能因为我们实现了动态生成测试用例,所以我们可以直接通过在生成动态用例的时候就传入该fixture函数......
  • ConcurrentModificationException日志关键字报警引发的思考
    本文将记录和分析日志中的ConcurrentModificationException关键字报警,还有一些我的思考,希望对大家有帮助。一、背景近期,在日常的日志关键字报警分析时,发现我负责的一个电商核心系统在某时段存在较多ConcurrentModificationException异常日志,遂进行分析和改进,下面是我的一些思考......
  • Mybatis使用generator逆向工程生成器生成entity、mapper、.xml模版类
    前言今天将表建好了,但是一个一个的建实体类、Mapper接口、Mapper.xml文件就十分的麻烦,所以我就想到了MyBatis逆向,今天就操作一把!这里我们采用maven来进行操作。一、新建generatorConfig.xml文件首先建好表,在你的项目的resource文件中新建generatorConfig.xml文件。代码如下:<?xmlv......
  • friend关键字扩展
    文章参考:爱编程的大丙(subingwen.cn)1.语法改进在C++98中,如果想要声明类B是类A的友元类,需要class关键字,而在C++11中,可以省略关键字class,还可以使用别名。EG:C++98中:classB;classA{friendclassB; //将B声明为A的友元private:intnum;}classB{priv......