python中的yield和return—迭代器和生成器

【Python】一直没搞懂生成器是什么。。 上期我们讲解了迭代器 这期我们来讲讲它的好兄弟——生成器 ### 生成器 (Generator)? 生成器是一种特殊的 **`迭代器`** (`Iterator`)。 **迭代器** 是你可以逐个访问其元素的对象(比如在 `for` 循环中使用)。列表、元组、字典、字符串等都是可 阅读详情

文章目录

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:961562169

摘要

yield和return有什么区别?什么事生成器?什么又是迭代器?他们都有什么作用?简单理解的话yield=return,返回函数体处理结果的!yield本身是一个生成器,所以使用return返回的是我们常见的一些object(eg:list、dict、等),使用yield返回的是一个迭代器对象!

yield和return

之前一篇文章【开启Scrapy爬虫之路】中,处理item时,定义函数返回值用的yield,有人问yield是干嘛的,什么意思?

相同点: 都是定义函数过程中返回值

不同点:

  • yield是暂停函数,return是结束函数; 即yield返回值后继续执行函数体内代码,return返回值后不再执行函数体内代码
  • yield返回的是一个迭代器(yield本身是生成器-生成器是用来生成迭代器的);return返回的是正常可迭代对象(list,set,dict等具有实际内存地址的存储对象)
# debug测试
def f1():
    print("第1次暂停")
    yield '第1次访问返回的结果'# yield 暂停函数的调用,返回一个结果
    print("第2次暂停")
    yield '第2次访问返回的结果'
    return 100 # reutrun结束函数的调用
    print('return直接结束,此句不执行')

生成器

如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。

要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:

>>> L = [x * x for x in range(10)]
>>> L
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> g = (x * x for x in range(10))
>>> g
<generator object <genexpr> at 0x1022ef630>

在这里插入图片描述
yield 返回的是一个生成器(看成迭代器更好理解)
在这里插入图片描述

迭代器

可以直接作用于for循环的对象统称为可迭代对象:Iterable

  • 一类是集合数据类型,如list、tuple、dict、set、str等;

  • 一类是generator,包括生成器和带yield的generator function
    在这里插入图片描述

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器有两个基本的方法:创建迭代器iter() 和 访问迭代器next()。

联系

yield 是一个生成器函数,返回的是一个迭代器(有说法是返回的是生成器,我感觉说成迭代器更适合),

最近思维混乱,然后写了好几篇博客但是感觉都不太好!都变成草稿了,这一篇本来也想存为草稿的,奈何我还是想在“GEEK+”原创·博主大赛挣扎下,所以发出来拉个票,后续那天清醒了再过来修改完善下,麻烦文末投票链接帮忙助力一下

原创不易,谢谢大家支持

ST7789驱动实战:从SPI时序到RGB565显示的完整配置解析 本文详细解析了ST7789液晶驱动芯片的SPI时序配置与RGB565显示实现,从数据手册解读到代码实战,涵盖SPI接口配置、关键寄存器设置及完整初始化流程。通过优化DMA传输和常见问题排查,帮助开发者高效驱动ST7789显示屏,适用于嵌入式显示项目开发。 阅读详情

相关推荐

基于PDF文档结构的数字隐写

PDF隐写

xiongshivigor的博客 1426

Python的return和yield,哪个是你的菜?

在Python中,return语句用于从函数中输出数据到调用者。当函数执行到return时,它会立即停止执行当前函数并返回指定的值

xyh2004的博客 1930

HC32 CAN通信

qqa

zhaopenglihui的博客 5434

python中的yield和return的区别

python中的yield和return的区别 return返回的是一个list列表,而yield每次调用只返回一个数值,毫无疑问,使用return空间开销比较大,尤其是操作巨量数据的时候,操作一个大列表时间开销也会得不偿失 yield 生成器相比 return一次返回所有结果的优势: (1)反应更迅速 (2)更节省空间 (3)使用更灵活 到这里你可能就明白yield和return的关系和区别了,带yield的函数是一个生成器,而不是一个函数了,...

AcceptedLin的博客 1万+

因时机器人-灵巧手配置方案(Ubuntu18.04)

因时机器人-灵巧手配置方案(Ubuntu18.04)

CH_monsy的博客 3848

用Python实现一个猜密码的程序

我们用Python实现猜密码

sk6584631_sz的博客 1261

Python中return和yield的区别

一、说明 python中最早看到yield应该是使用scrapy框架写爬虫的时候,之前也有去看yiled的用法,总记不太住。今天又去看了一下,基本上来就是讲些斐波那契数列的烦的要死,自己写段程序研究了一下,这里记一下。 二、return和yield的异同 共同点:return和yield都用来返回值;在一次性地返回所有值场景中return和yield的作用是一样的。 不同点:如果要返回的数据是通过for等循环生成的迭代器类型数据(如列表、元组),return只能在循环外部一次性地返回,yeild则可

python学习者的博客 2018

在Allegro设计界面中如何修改封装焊盘

在高密度板的情况下,SUIPLA(支持内层没有的焊盘摘掉)打勾,在高密度板的情况下,内层没有的焊盘摘掉可以增加走线的空间。3、修改完焊盘后,选择File→Update to Design(更新到设计)。然后关闭焊盘修改对话框即可。,将会定期不定期更新技术文章,互相学习交流。或者点击Options选项卡下要修改的焊盘,然后点击Edit修改。在Allegro PCB设计界面中修改封装焊盘的方法。2、然后点击封装上要修改的焊盘,右击选择Edit。修改完成后如下图所示。

bhxc809751502的博客 7806

Python教程:return和yield的区别

return一直中,每中语言中其没没有很大差别,就不多说了。(shell语言return的是退出状态,可能差别是比较大的)最早看到yield应该是哪们语言用来调整什么线程优先级的,记不清了,不过那里的yield和python中的yield应该功能有区别。

Python热爱者的博客 1361

Debezium系列之:使用指定值替代指定字段的值

Debezium系列之:使用指定值替代指定字段的值

zhengzaifeidelushang的博客 306

C# Winform使用Monaco打造代码编辑器

本文介绍了如何在Winform项目中集成Monaco代码编辑器。通过NuGet安装WebView2控件,创建monaco-editor.html文件加载编辑器,并实现与C#代码的交互。关键步骤包括:初始化WebView2环境、配置Monaco编辑器参数、设置代码变更监听事件以及处理C#与JavaScript之间的通信。注意事项提示了依赖库安装问题的解决方法。该方案实现了功能完整的代码编辑器,支持代码自动保存和实时显示功能。

遇见--专栏 346

python yield和return_python中的yield和return—迭代器和生成器

摘要yield和return有什么区别?什么事生成器?什么又是迭代器?他们都有什么作用?简单理解的话yield=return,返回函数体处理结果的!yield本身是一个生成器,所以使用return返回的是我们常见的一些object(eg:list、dict、等),使用yield返回的是一个迭代器对象!yield和return之前一篇文章【开启Scrapy爬虫之路】中,处理item时,定义函数返回...

weixin_39815600的博客 206

Python蓝色跳动的爱心(完整代码)

Python语言实现蓝色跳动的爱心的完整代码。 代码分析 这段代码使用了 库来创建一个动态的爱心图案,并在屏幕上显示带有动态效果的“我爱你”字样。以下是对这段代码的详细分析: 用于创建图形用户界面(GUI)。 用于生成随机数,主要用于控制爱心图案的扩散效果。 中的 , , , 用于数学计算,生成爱心形状和扩散效果。 包含了 等常量,用于控制控件的对齐方式。 2. 全局变量定义 , : 定义画布的大小。 , : 爱心的中心坐标。 : 用于定义爱心形状的缩放

AIGC 1919

python yield 廖雪峰_Python中的Yield和return迭代器和生成器,python,yield

摘要yield和return有什么区别?什么事生成器?什么又是迭代器?他们都有什么作用?简单理解的话yield=return,返回函数体处理结果的!yield本身是一个生成器,所以使用return返回的是我们常见的一些object(eg:list、dict、等),使用yield返回的是一个迭代器对象!yield和return之前一篇文章【开启Scrapy爬虫之路】中,处理item时,定义函数返回值...

weixin_26976635的博客 299

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

return两个返回值_python中的yield和return—迭代器和生成器

文章目录摘要yield和return生成器迭代器联系点击此处,获取海量Python学习资料!摘要yield和return有什么区别?什么事生成器?什么又是迭代器?他们都有什么作用?简单理解的话yield=return,返回函数体处理结果的!yield本身是一个生成器,所以使用return返回的是我们常见的一些object(eg:list、dict、等),使用yield返回的是一个迭代器对象!yie...

weixin_39603050的博客 364

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

python——生成器迭代器、return和yield

迭代器: 调用next()时返回容器中的下一个值,热和实现了__iter__和__next__()方法的对象都是迭代器,不会一次性把元素追加到内存中 可迭代对象: 实现了iter方法,该方法返回迭代器对象。 列表是一个可迭代对象。 用for循环遍历列表——列表实现了iter方法——返回一个迭代器——调用next()方法 生成器: 一边循环一边计算的机制,生成器能做迭代器能做的所有事。 return...

weixin_44737020的博客 373

python自学篇九[ 函数(二):返回值return+yield+迭代器+生成器]

返回值 函数并非总是将结果直接输出,相反,函数的调用者需要函数提供一些通过函数处理过后的一个或者一组数据,只有调用者拥有了这个数据,才能够做一些其他的操作。那么这个时候,就需要函数返回给调用者数据,这个就被称之为返回值,想要在函数中把结果返回给调用者,需要在函数中使用return。 函数的返回值 return关键字实现 return语句 return语句用于退出函数,选择性的向调用者返回一个...

Web_Student的博客 740

python yield和return_再谈Python中的yield,return的区别

初次学习Python,一定对yield的神奇功能感到好奇,又不好理解。下面用实际案例来说明yield和return的区别。观点1:return是函数返回值,当执行到return,后续的代码不再执行;yield是创建迭代器iteral,称之为生成器generator,让函数生成一个结果序列,而不仅仅是一个值,可以用for来遍历,有点事件触发的意思。可用现实的一种实物来理解:水车,先yield来装入数...

weixin_39847437的博客 373

python yield和return_对python中return与yield的区别详解

首先比较下return 与 yield的区别:return:在程序函数中返回某个值,返回之后函数不在继续执行,彻底结束。yield: 带有yield的函数是一个迭代器,函数返回某个值时,会停留在某个位置,返回函数值后,会在前面停留的位置继续执行,直到程序结束首先,如果你还没有对yield有个初步分认识,那么你先把yield看做“return”,这个是直观的,它首先是个return,普通的retur...

weixin_39805255的博客 289

Python中的迭代器和生成器

python中的迭代器和生成器 迭代器 迭代的概念 给定一个列表或者元组,可以通过for循环来遍历这个列表或者元组,我们把这种遍历称为迭代,迭代读取一条数据供我们使用的对象称为可迭代对象 在python中 在类里面定义iter方法创建的对象就是可迭代对象 class MyIter(): def __iter__(self): pass 在类里面定义ite...

Nan_y的博客 158

Python中的yield详细解释

Python 中的 yield详细解释

myart的博客 3415

python 返回列表_python 怎么用yield 返回一个列表

再问一个python函数的白痴问题,关于yield的Python2.5以前,Python yield是一个语句,但现在2.5中,yield是一个表达式(Expression),比如: m = yield 5 表达式(yield 5)的返回值将赋值给m,所以,认为 m = 5 是错误的。那么如何获取(yield 5)的返回值呢?需要用send(msg)方法。python中yield是什么意思一个带有...

weixin_39554434的博客 445

python中的yield详细用法

首先,如果你还没有对yield有个初步分认识,那么你先把yield看做“return”,这个是直观的,它首先是个return,普通的return是什么意思,就是在程序中返回某个值,返回之后程序就不再往下运行了。看做return之后再把它看做一个是生成器(generator)的一部分(带yield的函数才是真正的迭代器),好了,如果你对这些不明白的话,那先把yield看做return,然后直接看下面的程序,你就会明白yield的全部意思了: def foo(): print("starting..

MLONGKRT的博客 222

python中yield怎么用? 和return有什么区别

先说return return 关键字用在中函数,后面跟一个表达式或者啥也不写,表示该函数被调用时会返回一个值(如果不写东西就返回一个None)

y1282037271的博客 182

python里return,print,yield

今天看了一些迭代器和生成器的东西,觉得对这一块还是比较模糊,做个笔记吧~嗯嗯,国庆节在实验室过,真的很快乐哦(

Strive_0902的博客 1953

python3 yield和iter的区别_python高级教程(3)-生成器yield和迭代器iter

欢迎来到python大讲堂,打开你的IDE开始python之旅吧!生成器yield首先我们来看一个例子:def get(n):for i in range(n):yield inumbers=get(5)for i in numbers:print(i)你会得到:01234我为什么要写这个教程呢?因为我发现网上有许许多多yield的复杂解释,我想更简单地展示给初学者,因此有了这篇教程。回到正题,我...

weixin_39849418的博客 226
上一篇: 零基础掌握Python入门到实战
下一篇: 修改其他函数的功能的神器——python装饰器
Python_sn
博客等级 码龄6年 324粉丝 290原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值