`

IronPython0.9.2发布了 —— Generator Expression简介

阅读更多

        又是时候来关注一下IronPython开发的进展了。上个星期四(9月22日),IronPython0.9.2发布了,大家可以在<!---->Workspace中下载到这个最新的版本。我们从Workspace首页上那长长的List of fixed bugs可以看出,这次新版本的发布可谓进步不小啊!IronPython0.9.2除了修复了很多bugs之外,还有两个非常重要的改进:支持了Generator Expressions(PEP 289)Decorators for Functions and Methods(PEP 318)
        Generator Expressions和Decorators都是在Python2.4才支持的新特性。其中Generator Expression是一个容易理解的概念,从字面去看你或许就能猜出它的作用是什么。在探讨Generator Expression之前,我们先来看一个很简单的例子:

>>> l = [x*2 for x in range(5)]
>>> l
[
02468]
>>> sum([x*2 for x in range(5)])
20   "虽然你只需要一个总和,但是这种方式仍然会在内存中创建一个完整的list"


在这个例子当中,变量l是List类型,它的item则依据中括号里面的表达式来生成。通过这样的方式,我们可以很轻松地创建我们所需要的对象集合。其实,中括号里面的表达式就是一个Generator Expression,但是在Python2.4以前,并不存在Generator类型,因此Generator Expression只是生成List item过程的中间产物,我们并没有办法去引用它。再回到以上的例子中来,这种生成list item的方式虽然方便,但是在很多时候并不高效,因为你不一定需要一个完整的list,你可能需要的是list中某几个item或者说某个生成数列的和(如例子中的最后一个表达式)。你可以设想一下,如果表达式中的range激增至数千,不管你是否需要一个完整的list,这样的方式都会在内存中为你创建之,你会不会觉得这样做真的很浪费内存呢?在这样的背景下,Generator Expression就应运而生了。定义一个Generator Expression的方式很简单,将以上例子中的中括号换成小括号即可:

>>> g = (x*2 for x in range(5))
>>> g
<generator object at 0x000000000000002F>
>>> sum(g)
20


现在g的类型就是Generator了,然后调用sum函数获得该数列的总和,而在这个例子当中并没有创建一个完整的list。Generator Expression不仅减少了内存的开销,还提供iterator的functionality,我们可以通过调用next()方法来获得由generator生成的item。例如:

>>> g = (x*2 for x in range(5))
>>> g.next()
0
>>> g.next()
2
>>> g.next()
4

       
        Generator Expression的特性就讲到这里了,而Decorators是一个比较复杂的概念,偶了解得也颇少,就不在这里作探讨了。再罗嗦一句,Decorators可是Python中一个非常有用的特性哦,有兴趣的朋友不妨去研究一下。

分享到:
评论

相关推荐

    Python 笔记源码——内含python后端&机器学习等.zip

    Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip ...

    python小游戏——扫雷

    python小游戏——扫雷

    python项目——智慧校园考试系统.zip

    python项目——智慧校园考试系统.zip python项目——智慧校园考试系统.zip python项目——智慧校园考试系统.zip python项目——智慧校园考试系统.zip python项目——智慧校园考试系统.zip python项目——智慧校园...

    Word版,Python GUI设计——Tkinter菜鸟编程(上、中、下)

    ### Python GUI设计——Tkinter基础知识详解 #### 一、Tkinter简介 Tkinter是Python标准库中的一个图形用户界面(GUI)工具包,它提供了一系列的控件来帮助开发者快速构建用户界面。由于其易用性和跨平台特性,...

    python项目——Word助手.zip

    python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目...

    在.Net6中调用IronPython实现动态执行脚本

    在.NET 6中调用IronPython来实现动态执行脚本是一项强大的功能,它允许程序员在运行时编写和执行Python代码,极大地增强了应用的灵活性。IronPython是一个开源的Python实现,它能够无缝集成到.NET环境中,使得.NET...

    python项目——微信机器人.zip

    python项目——微信机器人.zip python项目——微信机器人.zip python项目——微信机器人.zip python项目——微信机器人.zip python项目——微信机器人.zip python项目——微信机器人.zip python项目——微信机器人....

    python项目——企业编码管理.zip

    python项目——企业编码管理.zip python项目——企业编码管理.zip python项目——企业编码管理.zip python项目——企业编码管理.zip python项目——企业编码管理.zip python项目——企业编码管理.zip python项目——...

    python项目——DIY字符画.zip

    python项目——DIY字符画.zip python项目——DIY字符画.zip python项目——DIY字符画.zip python项目——DIY字符画.zip python项目——DIY字符画.zip python项目——DIY字符画.zip python项目——DIY字符画.zip ...

    python项目——BBS问答社区.zip

    python项目——BBS问答社区.zip python项目——BBS问答社区.zip python项目——BBS问答社区.zip python项目——BBS问答社区.zip python项目——BBS问答社区.zip python项目——BBS问答社区.zip python项目——BBS...

    ironpython.zip

    IronPython的1.0版本在2006年9月5日正式发布,标志着该项目进入了成熟阶段。自那时以来,它经历了多次更新和改进,增强了性能,优化了与.NET框架的集成,并修复了许多bug。IronPython的最新版本支持Python 3的语法...

    python项目——甜橙音乐网.zip

    python项目——甜橙音乐网.zip python项目——甜橙音乐网.zip python项目——甜橙音乐网.zip python项目——甜橙音乐网.zip python项目——甜橙音乐网.zip python项目——甜橙音乐网.zip python项目——甜橙音乐网....

    IronPython开发工具

    IronPython是一种基于.NET框架的Python实现,它允许开发者在.NET平台上使用Python语法编写代码,并能够无缝集成.NET生态系统中的各种资源。IronPython与传统的CPython(标准Python解释器)相比,最大的优势在于它...

    IronPython in Action 无水印pdf版

    IronPython in Action 无水印pdf版。 IronPython in Action 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络 IronPython Action

    083964-夏敏捷-Python课程设计——代码(全部).zip

    本资源“夏敏捷Python课程设计——代码(全部).zip”提供了丰富的Python编程实践项目,涵盖了多个主题,旨在帮助学习者深入理解和掌握Python的核心概念及高级特性。 1. **Tkinter图形界面应用**: - Tkinter是...

    IronPython in Action

    《IronPython in Action》是一本深入探讨IronPython的权威书籍,专为那些希望利用Python的强大功能与.NET Framework的丰富库进行交互的开发者而设计。这本书不仅涵盖了Python的基础知识,更着重于讲解如何在.NET环境...

    python项目——五子棋(控制台版).zip

    python项目——五子棋(控制台版).zip python项目——五子棋(控制台版).zip python项目——五子棋(控制台版).zip python项目——五子棋(控制台版).zip python项目——五子棋(控制台版).zip python项目——...

    python项目——开心麻花影视作品分析.zip

    python项目——开心麻花影视作品分析.zip python项目——开心麻花影视作品分析.zip python项目——开心麻花影视作品分析.zip python项目——开心麻花影视作品分析.zip python项目——开心麻花影视作品分析.zip ...

Global site tag (gtag.js) - Google Analytics