生成器迭代器可迭代对象(迭代器生成器区别是什么)
导语:第66p,概念:生成器、迭代器与迭代对象(下)
大家好,我是杨数Tos,这是《从零基础到大神》系列课程的第X篇文章,第三阶段的课程:Python进阶知识:生成器、迭代器与迭代对象(下)。
一、生成器
1、什么是生成器?
自定义器迭代器就是生成器(generator);生成器就是迭代器;
2、如何得到自定义的迭代器:
在函数内存在yield关键字,调用函数时并不会执行函数体代码;而是返回一个生成器对象(generator),这个生成器就是自定义的迭代器;
3、生成器的执行过程
A. 在函数体内,只要有yield关键字,调用函数会返回一个生成器对象(generator),
B. 执行__next__()方法就触发了函数体代码的运行,
C. 遇到yield关键字,停下来,将yield后面的返回值,当作本次调用的结果返回;
D. 这个时候函数本身并没有结束,只是停在当前位置,再次调用__next__()方法,才会继续执行下去;
E. 当生成器内的值被取完,就会发生报错,这个原理和迭代器是一样的。
4、yield和return的区别:
1.关键字return只能返回一次值,执行一次函数就结束了;
2.关键字yield能返回多次值,可以将函数暂停执行;
3.在Python中关键字yield是非常重要的,通常我们执行函数(或者是类)的代码时,一般都是遇到return关键字时,返回结果并退出函数,而yield关键字可以将函数暂停,返回结果;再回来执行函数体代码;
4.另外一个非常作用的作用就是,在Python中的异步非阻塞也会用到yield关键字。
最后:可迭代对象、迭代器、生成器这些都是Python的底层概念,我们只需要了解它们的运行原理即可,实际开发过程中基本不会发生我们要自定义迭代器、生成器的情况。
以上是本期内容,如果有表达不对的内容,欢迎您的留言、斧正,我们一起天天向上。
感谢您的阅读,您的三连【关注、点赞、收藏】就是对我最大的支持,谢谢!
本文由杨数Tos原创,欢迎关注,带你一起长知识。
免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请与我联系,一经查实立刻删除内容。本文内容由快快网络小荣创作整理编辑!