搜索
写经验 领红包

生成器迭代器可迭代对象(迭代器生成器区别是什么)

导语:第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原创,欢迎关注,带你一起长知识。

免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请与我联系,一经查实立刻删除内容。本文内容由快快网络小荣创作整理编辑!