Python生成器,python生成器

Python生成器,python生成器

怎样理解Python迭代器和生成器?

在 Python 中一切皆对象,对象的抽象就是类,而对象的集合就是容器。python中列表、组、字典、集合都是容器。python中所有的容器都是可以迭代的,这点和枚举有着本质区别。迭代器就是用于迭代操作的对象,它像列表一样可以迭代获取其中的每一个。它与我们平时使用for循环遍历列表中所有元素的区别在于,构建迭代器的时候,不像列表把所有元素一次性加载到内存,而是以一种延迟计算方式返回元素,这就是我们前面所说,为什么可以极大的减小内存的占用。

它是等到调用next方法时候才返回该元素(本质上 for 循环就是不断地调用迭代器的next方法)。Python使用生成器对延迟操作提供了支持。所谓延迟操作,是指在需要的时候才产生结果,而不是立即产生结果。这也是生成器的主要好处。生成器则是提供了一种延迟操作,其不用return返回结果,而是使用。生成器函数就是常规函数的定义,但是,使用语句而不是return语句返回结果。

语句一次返回一个结果,在每个结果中间,挂起函数的状态,以便下次重它离开的地方继续执行。我们写python代码使用的for in 语句就是将上述迭代过程隐式化 ,生成器是特殊和高级的迭代器,并不会像迭代器一样占用大量内存,只有在被使用的时候才会调用产生相应的对象,可以降低内存占用、优化程序结构、提高程序速度。

既然Python是用C实现的,那为什么Python不能直接生成exe呢?

C语言其实是一种比较“古老”而且“底层”的语言。其执行效率,仅次于汇编语言。说其古老,是因为C语言的出现很早。虽然Fortran、Cobol语言出现比C语言更早,但是现代主流操作系统(Windows、Mac Os、linux、iOS、Android、Unix)全部脱胎于C语言。说它底层,是因为C语言设计之初就是为了同时编写汇编语言。

理论上可以全部用汇编写。而汇编语言是执行效率最高的语言。所以Python用C语言写一点也不奇怪。这和它能不能生成Exe一点关系都没有。Exe文件是Windows平台的私有格式。最简单的Exe是Com可执行文件。Exe文件实际上是一个引导程序 一个解释程序组成的。Python语言生成的代码,只需要配以引导程序和解释程序,就可以作为Exe文件执行。

  • 姓名:
  • 专业:
  • 层次:
  • 电话:
  • 微信:
  • 备注:
文章标题:Python生成器,python生成器
本文地址:http://vmwizqzk.55jiaoyu.com/show-730641.html
本文由合作方发布,不代表展全思梦立场,转载联系作者并注明出处:展全思梦

热门文档

推荐文档