`

IronPython的第六块鳞片(续)

阅读更多

       在上篇Post中,我提到了IronPython0.7的一个问题:通过key来获取Dictionary类型变量的value,如果key不存在,Console将不会有任何的提示,而CPython则会有相应的KeyError的提示信息。后来,我在IronPython的MessageBoard上发了一个帖子来说明这个问题。结果第二天,IronPython的老爸——Jim Hugunin给予了回复。他认为如果一段代码在IronPython下执行与CPython下执行存在不同,大多数的情况下都会是一个bug。同时,他又提出了另外一个问题,如果Dictionary是.NET的标准数据类型,如Hashtable,那么将会很难处理这种情况。以下是他给出的示例代码:       

>>> from System.Collections import * 
>>> d = Hashtable() 
>>> d["exists"= 1 
>>> d["exists"
1 
>>> repr(d["missing"]) 
'None' 

        首先要说明一下repr这个function。它是内建的一个函数,函数的参数是一个object的instance,调用的结果是返回一个String,这个String则描述了instance,类似于常见的toString方法。我们回到示例代码上来,由于d是一个Hashtable,其本质与Dictionary几乎是一致的:都是存放着key/value pair(键值对)。事实上在Hashtable中,通过key去获取相应的值的时候,如果key不存在,并不会产生任何exception,而是返回一个null。那么,这样反映出来的对象行为与Dictionary就会有不同的地方。Jim的言下之意是,给出一个KeyError的提示不难,但是难就难在,引入了这些在.NET下才有的对象,如何去定义这些对象在IronPython下的行为,是继续保持它们在.NET下的行为呢?还是对它们的行为进行改造,以适合Python的环境呢?Jim认为这个问题是十分重要的,用他的一句话来说明就是:Figuring out the right behavior for these kinds of foreign types in IronPython is one of the bigger interesting design questions. 
        

分享到:
评论

相关推荐

    IronPython-2.7.5.zip

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

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

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

    ironpython.zip

    IronPython是一种基于.NET和Mono平台的Python实现,它是由Jim Hugunin开发的,而他也是Jython的创始人。这个项目的主要目标是提供一个与标准CPython解释器兼容的Python环境,同时利用.NET框架的强大功能。IronPython...

    IronPython开发工具

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

    IronPython in Action

    6. 扩展和自定义:可能涉及如何使用IronPython编写.NET组件,以及如何利用Python的动态性来扩展.NET程序。这包括自定义.NET类型、实现COM接口、以及使用IronPython作为脚本引擎。 7. 社区和工具:介绍IronPython...

    IronPython in Action 无水印pdf版

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

    IronPython 2.6源代码

    6. **单元测试与持续集成**:IronPython可以使用.NET的单元测试框架如NUnit进行测试,方便进行自动化测试和持续集成。 7. **并行计算**:结合.NET的多线程和并行计算框架,IronPython可以编写高性能的并行处理程序...

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

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

    IronPython简单程序源码

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

    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

    6. **与其他Python实现的比较**:与CPython(官方的Python实现)相比,IronPython在.NET平台上的运行速度可能会更快,因为它利用了.NET的JIT编译和优化。然而,由于它是Python的实现之一,因此并非所有的Python库都...

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

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

    IronPython和C#交互

    6. **IronPython调用C#**:IronPython可以使用`clr`模块来引用C#的命名空间、类和方法。通过`clr.AddReference()`加载.NET程序集,然后像调用Python对象一样调用C#的类和方法。 7. **数据类型转换**:由于两种语言...

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

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

    IronPython-2.7.5

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

    IronPython-2.7.7-win.zip

    6. **动态性**:IronPython充分利用了.NET的动态语言特性,使得Python的动态编程风格得以保留,如动态类型、动态绑定等。 7. **跨平台**:虽然这个特定的版本"IronPython-2.7.7-win.zip"是为Windows设计的,但Iron...

    Manning.IronPython.in.Action

    IronPython保留了Python的简洁和易读性,但运行于.NET之上,因此学习Python的基本概念是开始IronPython之旅的第一步。 2. **.NET Framework**:IronPython能够无缝集成到.NET Framework中,这意味着你可以访问.NET...

    [IronPython] IronPython 高级程序设计 (英文版)

    [Apress] IronPython 高级程序设计 (英文版) [Apress] Pro IronPython (E-Book) ☆ 出版信息:☆ [作者信息] Alan Harris [出版机构] Apress [出版日期] 2009年06月22日 [图书页数] 312页 [图书语言] 英语 ...

Global site tag (gtag.js) - Google Analytics