`

不可错过的MSDN TV —— IronPython: Python on the .NET Framework (上)

阅读更多

        最近忙得焦头烂额,都把IronPython晾在了一边,真的好愧疚。一眨眼的功夫,IronPython的version竟然来了个三级跳:11月初的时候,偶还在向大家报道0.9.4发布的消息,而早在半个月前(12月9日),0.9.6就已经发布了。进展真的神速啊!从0.9.6的release memo可以了解到:0.9.7可能是不会出现的了,因为会直接发布1.0版本!看来,盼望已久的IronPython1.0离发布真的为期不远了。
        说完IronPython开发的进展,也该言归正传了。今天我们主要对MSDN TV上的一个视频节目——IronPython: Python on the .NET Framework做一些讨论。这个视频早在11月10日就发布出来了(不得不再次BS一下自己的懒惰),而做秀者正是大名鼎鼎的IronPython之父——Jim Hugunin(终于可以一睹偶像的尊容啦!)。在这个视频中,Jim首先向大家十分简要地介绍了IronPython以及创造IronPython的一些背景,而这只花了不到三分钟。然后他花了十多分钟对IronPython中很多有趣的功能进行了Demo,内容十分翔实,强烈建议大家下载观看,相信大家在看过这个Demo之后,会对IronPython有一个全新的认识。由于Jim在里面讲的是英文,语速也较快,也许听懂还真的挺费劲。不过不用担心,MSDN网站上提供了整个视频对应的文本,这下子绝无遗漏了。^_^
        在整个视频当中,Jim所做的Demo有很多,涵盖的面也比较广。我对这些Demo进行了分类,讲述一下自己在跟着做Demo的过程中的一些体会以及需要注意的问题:
         Demo 0.0 准备工作:虽然Jim没有说明要做完这些Demo得准备些什么,但是为了方便大家,我把必需的东东列示如下:
         IronPython:0.9.2以上版本,推荐最新的0.9.6
         CPython: 推荐2.4.2版本
         WinFX Runtime Components:推荐使用最新的CTP版本
         Visual Stuido 2005:推荐使用Express C#版本或者Professional版本;
         Windows SDK:使用最新的CTP版本
         WinFX Development Tools For VS 2005: 推荐使用最新的Code Name为Orcas的Community Technology Preview Edition,要注意的是安装这个Tools之前必须安装Windows SDK。

         Demo 0.1 启动IronPython:如果你手上的是0.9.6版本的IronPython,那么我建议你到Tutorial的目录下通过执行ip.bat启动IronPython,这是为了方便导入一些必需的IronPython module。启动以后,进入IronPython的Interactive Mode,就是交互模式。

         Demo 1 奇特的计算器:这个Demo很简单,在Interactive Mode下,输入简单的表达式,按回车就马上得到表达式的结果,充分体现了IronPython作为一种Script语言的交互性和高效性;

         Demo 2 利用CPython库:在这个Demo中,IronPython调用了CPython已有的类库:this和random。这是一个让我很惊讶的地方,因为之前我并不知道IronPython可以直接使用CPython提供的类库,还认为需要很大的人力物力移植CPython的类库呢。这个Demo虽然也是很简单,但是意义却十分重大,有了对CPython Module的充分支持,Python的开发者不是可以平滑过渡到IronPython了吗?代码分析如下:        

1. import sys  导入sys module;
2. sys.path.append(
"c:/Python24/Lib")   增加搜索路径,也就是说当import某个module的时候,将会到已有的搜索路径中查找;
3.
import random  导入CPython中名为random的module;
4. random.
__doc__   显示模块的document;
5. cards 
= range(51)  内置的range方法用于产生一个范围内的数字序列,返回的类型为List
6. random.shuffle(cards)   改变List中元素的位置,形成随机序列;


        Demo 3 利用.NET类库:既然IronPython是Python在.NET平台上的实现,那么IronPython能够使用.NET是很自然的事情,当然也是它的优势之一。在这个Demo中,要特别注意导入Namespace、Class和Method的方法。代码分析如下:

1. import System  直接导入System这个Namespace;
2.
from System.Math import 导入System.Math类中所有方法,之后就可以直接调用了。Sin(PI/2)就是一个例子,不需要用Math.Sin(PI/2)这种方式了。特别需要注意的是,当你没有显式导入Math这个Class的时候,即使导入了其中的所有方法,使用Math.Sin(PI/2)也是会报错的。毕竟IronPython并不知道Math是什么东东,除非你告诉它;
3.
from  System import Random  导入System.Random类;
4. r 
= Random()  构造Random类的一个实例,类似C#的 Random r  = new Random();
5. [r.Next(0,100for i in range(10)]  构造一个元素个数为10的List,该List的元素是0到100范围内的随机数。这是常见的构造List的方法,前面的r.Next(0,100)部分表示生成List元素的规则,而for后面的部分则表示执行该规则的次数;


        Demo 4 类的特性:这个Demo展示了IronPython中有关类继承的特性,最有意思的则是你可以随时增加某一个类实例的数据成员和方法。代码解析如下:

1. class MyRandom(Random): pass:定义类MyRandom,该类继承了Random类。而后面的pass则表示一条空语句,这跟C#中直接写一个分号(;)是一样的;
2. mr 
= MyRandom(): 构建MyRandom类的实例;
3. mr.foo 
= 42:为MyRandom的实例mr增加了一个名为foo的数据成员,并赋值42,接着就可以利用mr.foo访问该数据成员了;
4.
def Sample(self): return 0.5: 定义了一个名为Sample的function,虽然参数self并没有在function体中用到,但这是为了将该function能够被类实例使用,才使用了该参数;
5. MyRandom.Sample 
= Sample:在类定义的层面上增加(或者是改写,在这里就是改写,因为父类中定义了Sample方法)Sample方法,并将Sample这个function的定义赋值给MyRandom.Sample这个方法,就类似于C#在类定义的时候增加方法定义;
6.
[mr.Next(0,100for i in range(10)]:这个时候,由于改写了Sample方法,而Next方法需要依靠Sample方法的返回结果,因此得到的不再是随机数列了;
7.
def Sample(self): return 0.8 + 0.2*super(MyRandom, self).Sample():重新定义了Sample function。在这里使用super这个类型的构造函数获得了MyRandom的父类Random的一个实例,然后调用它的Sample方法,这使得[mr.Next(0,100for i in range(10)]再次返回随机数列,但该数列的范围已经变成了80-100


        Demo 5 使用WinFX:IronPython的开发从来都紧跟.NET Framework的升级,更重要的它也十分重视IronPython在未来开发平台上的应用。因此,从Demo5往后的Demo都跟WinFX是相关的。由于这个Demo涉及的内容比较多,具体内容将在下一篇Post中进行详细讲述。    

        Demo 6 与C#之间的互协作:大家都知道.NET是一个跨语言的协作平台,然而到现在为止,大部分所谓的跨语言协作只是在IL层面上的协作,那么源代码级别呢?或许大家想到了以前在C中随手捻来一段汇编的日子,其实你会发现在IronPython的世界里,你可以随手捻来一段C#代码,反之亦然。这是不是很Cool呢?详细的介绍请关注本系列最后的Post

        Demo 7 调试IronPython程序:大约一个季度前,我在叫嚣着得为IronPython做个IDE什么的。是的,利用IronPython进行开发很高效,但是一旦程序规模变大,没有好的开发环境还真的不行,至少调试就令人头痛不已。而这个Demo向大家介绍了调试IronPython的技巧,详细介绍也请关注本系列最后的Post

        Demo 8 调用COM组件:IronPython在与COM组件的协作上表现得异常优越,由于IronPython并不需要为变量声明类型,这给调用COM组建提供了不少便利。在这个Demo感中,通过IronPython的代码调用MS Agent COM组件,会有一个可爱的卡通人物在屏幕上飞来飞去,还会做很多很Q的动作,非常好玩。具体内容请看本系列最后的Post。在这里要感谢CcBoy的提醒,因为一开始我把这个Demo给遗忘了。

        PS:要写的内容太多了,只好分为三个部分完成,否则我发得累,大家看得也累。现在就先为后面的Post打打广告了,谢谢捧场,嘻嘻~~~

分享到:
评论

相关推荐

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

    IronPython的核心特性在于它是一个.NET兼容的Python解释器,它能够运行标准的Python 2.7语法,并且能够与.NET Framework中的其他组件交互。这意味着你可以在.NET应用中直接调用Python脚本,或者在Python脚本中访问...

    使用IronPython把Python脚本集成到.NET程序中的教程

    主要介绍了使用IronPython把Python脚本集成到.NET程序中的教程,现在刚刚被微软开源的.NET重新成为业界热点、本文介绍了使Python和.NET交互的IronPython,需要的朋友可以参考下

    IronPython in Action

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

    IronPython开发工具

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

    IronPython-2.7.5.zip

    IronPython是Python编程语言的一个重要实现,特别是在.NET和Mono平台上。这个特定的版本,"IronPython-2.7.5.zip",包含了IronPython 2.7.5的安装文件"IronPython-2.7.5.msi",这是一个Windows安装程序,用于在...

    IronPython 2.6源代码

    这个项目是由微软的前员工、现为Google员工的Michael Foord领导的,旨在提供一个高性能、可扩展且能够无缝运行在.NET和Mono平台上的Python实现。IronPython的出现极大地拓宽了Python在企业级应用开发中的使用范围,...

    IronPython和C#交互

    标题中的"IronPython和C#交互"涉及到的是两种不同编程语言——IronPython(一种Python的实现,能够在.NET框架上运行)和C#之间的协同工作。 IronPython的优势在于它允许Python开发者利用.NET平台的强大功能,而C#是...

    IronPython.7z

    IronPython是一款专为.NET Framework设计的Python实现,它允许开发者在.NET平台上使用Python语言进行编程。这个压缩包“IronPython.7z”包含了IronPython的两个版本:稳定版2.7.11和测试版3.4.0a1。 1. **Python ...

    Manning.IronPython.in.Action

    1. **Python基础**:首先,理解Python的基础语法和特性是必不可少的,包括变量、数据类型、控制结构(如if-else、for循环、while循环)、函数、类和对象等。IronPython保留了Python的简洁和易读性,但运行于.NET之上...

    IronPython in Action 2012.pdf

    ### IronPython in Action #### 知识点概览 1. **IronPython 概述** - 定义与背景 - Python 和 .NET 的结合 ...对于想要学习 IronPython 或希望深入了解 .NET 平台的开发者来说,这本书是一本不可或缺的参考书籍。

    IronPython各个支持平台对应的DLL资源

    IronPython是一种开源的Python实现,它能够无缝地与.NET Framework集成,允许开发者使用Python语言编写.NET应用程序。在.NET环境中,IronPython提供了与C#、VB.NET等其他.NET语言的互操作性,使得Python开发者可以...

    ironpython.zip

    IronPython不仅支持Python的语法和标准库,还提供了对.NET Framework类库的访问,允许开发者调用.NET的API,如System.IO、System.Drawing等,进行文件操作和图形绘制。 IronPython的1.0版本在2006年9月5日正式发布...

    IronPython简单程序源码

    IronPython是一种基于Python编程语言的开源实现,它允许开发者在.NET Framework上运行Python代码,并能够无缝集成到.NET环境中。这个“IronPython简单程序源码”很可能是为了展示如何在Visual Studio 2008中使用Iron...

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

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

    IronPython-2.7.7-win.zip

    IronPython是Python编程语言的一个实现,它允许开发者在.NET Framework和Mono平台上运行Python代码。这个压缩包"IronPython-2.7.7-win.zip"包含了IronPython的2.7.7版本,专为Windows操作系统设计。这个版本是在...

    IronPython-2.7 for VS2010

    IronPython是Python的一种实现,它运行在.NET Framework之上,提供了与标准CPython解释器相似的功能,但能够无缝地与.NET生态系统集成。这个“IronPython-2.7 for VS2010”是专为Visual Studio 2010设计的版本,让...

    C# IronPython 脚本引擎源码 + 例子

    IronPython是一种开源的Python解释器,它被设计成可以在.NET框架上运行,使得Python程序员能够利用.NET的强大功能。这个压缩包包含的是C#实现的IronPython脚本引擎源码以及相关的示例,对于想要深入了解Python在.NET...

    IronPython2.0最新版本以及IDE等源码

    【IronPython2.0最新版本】是Python编程语言的一个实现,它允许开发者在.NET Framework上运行Python代码。这个实现由Microsoft开发,旨在提供一个与标准CPython解释器兼容的环境,同时利用.NET平台的高性能和丰富的...

    IronPython-2.7.7.msi 金蝶云 调试python脚本环境搭建。

    标题中的"IronPython-2.7.7.msi"指的是IronPython的一个版本,这是一个开源的Python实现,可以在.NET Framework上运行。它允许开发者使用Python语言编写应用程序,同时利用.NET平台的强大功能。金蝶云,另一方面,是...

Global site tag (gtag.js) - Google Analytics