`

IronPython的第五块鳞片

阅读更多

        不知不觉就到了十月份,IronPython这条小蟒蛇也很久没跟大家say Hi了,不过与它老爸Jim从Mail List乃至他的个人blog中消失的时间相比,确实是算不了什么。今天去看了一下Mail List和Jim的blog,很意外的在Mail List中看到了Jim熟悉的名字。
        在这篇久违的Message中,Jim也承认自己自从加入了MS之后,很多事情让他费神以致于不能专注到开发中来。同时,也刊出了一个求贤启事,寻求能够参与IronPython开发的程序员,看来IronPython1.0的开发已经提上日程了。在Jim的另外一个Message中,我看到了一个于我而言的新词汇 :LCG(Lightweight Code Generation),而这个新特性则是来自.Net2.0/Whidbey。由于LCG与Reflection相比的一个最大的优势就是,生成的方法所使用的内存是可以被回收的,IronPython1.0中会使用这样的机制去实现代码生成,也就是会在一定程度上替代AssemblyBuilder。有兴趣的话,可以从Mail List中获得更具体的信息。MSDN Blog上还有一篇讲LCG的post
        10月份的Mail List中还提到了不少关于IronPython的bug,譬如in运算符。在IronPython中,in运算符对于两种Python特有的Data type:Dictionary,List而言,实现是OK的,但是对于字符串和Tuple则是存在问题。我们在Interactive的环境下进行测试:

>>> "ab" in "abc"
False

>>> t = (1,2,3)
>>> 3 in t
True

>>> 4 in t
False

>>> "s" in t
True

从以上的结果,我们可以发现第一个和最后一个in运算符返回的结果都是有问题的。而这些在CPython下都能得到正确的结果。
       细心的你一定会从上面看到三种比较特殊的Data Type:Dictionary,List和Tuple。下面就简单的说说这三种数据类型。首先是Dictionary,它跟HashTable很类似,是由Key/Value pair(键值对)组成,不支持直接的下标形式的访问,但是可以通过key得到相应的value。如下所示:
  
 >>> d = {"first":1,"second":2}
 >>> d["first"]
 1

>>> d["third"]
Traceback (most recent call last):
  File 
"<stdin>", line 1in ?
KeyError: 
'third'

当key错误的时候,在CPython下是会有如上的错误信息,IronPython面对这个错误的时候就是无言以对,什么都没有提示,让人莫名其妙。
        接着就是List,它跟数组是很类似的,支持直接的下标形式的访问,同时也很容易的访问并生成sub List。如下所示:
>>> l = ["first""second""third"]
>>> l[0]
'first'

>>> l.append("fourth")
>>> l
[
'first''second''third''fourth']

 >>> l.insert(2,"middle")
 >>> l
 ['first''second', 'middle', 'third''fourth']
 
 >>> l.remove("middle")
>>> l
 ['first''second''third''fourth']

>>> l[0:2]
[
'first''second']

通过append,insert和remove等方法可以轻松地改变List中的内容,同时通过:运算符也容易得到Sub List,十分的灵活。
        最后就是Tuple了,它跟List很象,最重要的不同就是它是Immutable的。同时,访问Tuple的速度要比访问List快,而且,Tuple本身是不可变的,因此Tuple就与Constant类似了。如下所示:

>>> t = ("first""second","third")
>>> t[0]
'first'

>>> t.append("fourth"// Error
>>> t.remove("second"// Error

        上面简要的介绍了一下Python中比较特殊的三种Data Type,有兴趣的朋友可以从Dive Into Python中得到更多的信息。
分享到:
评论

相关推荐

    IronPython-2.7.5.zip

    9. **库支持**:IronPython能够导入和使用许多Python第三方库,尽管可能需要一些适配工作,特别是那些依赖于C扩展的库。 10. **工具集成**:IronPython可以很好地与Visual Studio等.NET开发工具集成,提供调试、...

    IronPython-2.7.4(内附样例程序)

    IronPython-2.7.4 是一个开源的Python实现,它是专门为.NET Framework和 Mono 平台设计的。这个版本的IronPython兼容Python 2.7的语法和库,允许开发者在.NET环境中运行Python代码,同时也支持与.NET组件的无缝集成...

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

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

    ironpython.zip

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

    IronPython开发工具

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

    IronPython in Action

    5. 性能和调试:讨论IronPython的性能特点,比较与标准CPython的差异,以及如何优化代码。此外,也会介绍在.NET环境中调试IronPython代码的方法和工具。 6. 扩展和自定义:可能涉及如何使用IronPython编写.NET组件...

    微软IronPython源码

    5. **C#与Python的协同工作**:IronPython使得Python和C#开发者可以共享代码和资源,促进团队间的协作。 6. **源码分析**:通过阅读IronPython-1.1的源码,我们可以学习到Python语言如何被转换为.NET字节码,以及...

    IronPython in Action 无水印pdf版

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

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

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

    IronPython 2.6源代码

    5. **集成开发环境(IDE)支持**:由于IronPython是.NET的一部分,它能很好地与Visual Studio等IDE集成,提供语法高亮、自动完成和调试功能。 6. **单元测试与持续集成**:IronPython可以使用.NET的单元测试框架如...

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

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

    IronPython in Action 2012.pdf

    - 第一个 IronPython 程序 - 基本语法与数据类型 3. **.NET 对象与 IronPython 的交互** - .NET Framework 简介 - IronPython 如何操作 .NET 对象 - 面向对象编程在 IronPython 中的应用 4. **核心开发技术** ...

    IronPython.7z

    - **IronPython 3.4.0a1**:这是一个测试版,对应Python 3.4的第一个alpha版本。Python 3.x引入了许多重大改变,包括语法更新和向后不兼容的改进。这个版本的IronPython让开发者可以尝试Python 3的新特性,但可能...

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

    5. **构建脚本**:如果包含的话,这可能是用于编译和打包IronPython的脚本,对于想要自定义或扩展IronPython的人来说非常有价值。 通过学习这些源码和示例,开发者可以了解到如何在C#项目中集成Python脚本引擎,...

    IronPython和C#交互

    5. **C#调用IronPython**:C#可以通过`PythonEngine`类来执行IronPython脚本,创建Python上下文,并调用Python函数。例如,可以使用`PythonEngine.ExecuteFile()`来运行Python脚本,或者使用`PythonEngine.Import...

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

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

    Atom-ironpython-stubs,通用ironpython/.net库的自动完成存根.zip

    Atom-ironpython-stubs是一个专为IronPython和.NET框架开发者设计的工具,它提供了一套自动完成的存根(stubs)文件。这些存根文件主要用于增强开发环境的代码补全功能,帮助程序员在使用IronPython进行.NET库的交互...

    IronPython-2.7.5

    IronPython-2.7.5 是一个开源项目,它允许开发者在 .NET Framework 上运行 Python 代码,并且能够与 C# 程序无缝集成。这个版本是 IronPython 的一个重要里程碑,提供了对 Python 2.7.5 版本的支持。在本文中,我们...

    IronPython-2.7.7-win.zip

    5. **IDE支持**:由于是.NET的一部分,IronPython可以很好地与Visual Studio等.NET IDE集成,提供代码提示、调试等功能,提高开发效率。 6. **动态性**:IronPython充分利用了.NET的动态语言特性,使得Python的动态...

Global site tag (gtag.js) - Google Analytics