`

IronPython0.9中的Examples

阅读更多

        自从IronPython加入了与.NET 2.0一齐发展的行列之后,我的SharpDevelop就不好使了。没有办法,为了能够把IronPython0.9自带的几个Sample跑一跑,花了几天的时间,终于把Visual C# 2005 Express Edition Beta装上了。在聊聊IronPython0.9自带的Example之前,真的忍不住对Visual C# 2005赞叹一番:漂亮的界面,不错的启动速度,对UI开发鬼斧神工般的支持,实在太Cool了!
        抹掉了天花乱坠的唾沫星子,让我们来看看IronPython中的例子吧。在IronPython0.9中自带了两个Example,两个都涉及到了IronPython与C#之间交互的问题。Delegate这个例子主要是说明了在C#中声明了Delegate,而在IronPython文件中定义相应的Event Handler的情况。

public class Counter {
    
public int counter = 0;
}


public class Walker {
    
public delegate int ProcessRegular(XmlNode node);
     
    
public event ProcessRegular OnNodeRegular;

    
private int RegularWalk(XmlNode n, Counter cnt) {
        cnt.counter
++;
        
if (OnNodeRegular(n) == 0return 0;
        
foreach (XmlNode ch in n) {
            
if (RegularWalk(ch, cnt) == 0return 0;
        }

        
return 1;
    }

}

以上是Delegate.cs的部分代码,你会发现这里仅仅是声明了OnNodeRegular,并没有具体的方法体。而实际的方法体则是在IronPython文件中被定义的:

def OnNodeRegular(node):
    print 
"%s, %s, %s" % (str(node), str(node.Name), str(node.Value))
    
return 1
w.OnNodeRegular 
+= OnNodeRegular

这里为我们提供了使用Delegate的一种全新的途径:由IronPython去定义被C#代码调用的Event Handler,不同语言的协作性展现无遗。然而,Python不支持方法重载的特性或许会影响function充当Event Handler的通用性。
        而在另外一个例子Embedding中,我竟然没有找到熟悉的.py文件,颇感意外。于是打开其中的一个.cs文件一看,喔,熟悉的IronPython代码都跑到了C#代码中了。原来,Embedding的例子为我们展示了一种在C#中使用IronPython Script的方式。

public class Embed3 {
    
public static int Value = 0;
    
const string command =
        
"import Embed3                  \n" +
        
"Embed3.Value = 20              \n";

    
public static void Run() {
        PythonEngine engine 
= new PythonEngine();
        engine.LoadAssembly(
typeof(Embed3).Assembly);
        engine.Execute(command);
        Console.WriteLine(Value);
    }

}

代码的输出为20,Embed3中Value的值被IronPython Script改变了。这里实现的机制并不神秘,是通过Reflection来改变Value的值。
        关于例子本身,没有太多的东西可以罗嗦的了,毕竟例子只是告诉了我们如何去使用这样的一些特性。 我更愿意去想想这样的例子给我们带来的启示。两个例子都无一例外的展现了IronPython同C#之间良好的协作性,我不禁开始畅想在未来的Project当中会包含着两种语言,而开发团队也会由IronPython和C#程序员组成,使用不同的语言来开发不同的模块,让语言的优越性得到充分的发挥。也许你会觉得不同语言的协作性在.NET平台早以有之,用得着大惊小怪吗?但是我觉得在项目开发当中,真的会同时使用两种不同的.NET语言吗?C#和VB.NET的协作是IL层面上的,我们并没有办法将VB.NET的代码直接embed到C#的代码中。而在IronPython中,你可以选择将C#的代码Embed到IronPython的代码中(第一个例子),也可以选择将IronPython代码Embed到C#(第二个例子)中,这无疑为开发增加了更多的灵活性。 由于IronPython天生的轻量级特性,在C#代码中嵌入IronPython Script会有效地减少代码量,当然在程序的可维护性方面就可能有所下降了。不管怎么样,IronPython引入了一种新的不同语言的协作机制,也许它会成为你提高编码效率的选择。

PS:IronPython0.9.1在一个星期前,也就是8月23日发布了。期待1.0中……

分享到:
评论

相关推荐

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

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

    ironpython.zip

    IronPython的最新版本支持Python 3的语法特性,使开发者能够在.NET环境中享受到现代Python的便利。 在实际应用中,IronPython可以用于构建桌面应用程序、Web应用程序、游戏、科学计算等多种场景。例如,使用Iron...

    IronPython开发工具

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

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

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

    IronPython in Action 无水印pdf版

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

    IronPython in Action

    这本书不仅涵盖了Python的基础知识,更着重于讲解如何在.NET环境中有效地使用IronPython。 IronPython是微软开发的一个开源Python实现,它允许Python代码无缝地与.NET Framework集成,极大地扩展了Python的适用范围...

    IronPython 2.6源代码

    IronPython的出现极大地拓宽了Python在企业级应用开发中的使用范围,因为它能够利用.NET的丰富类库和工具生态系统。 源代码分析: 1. **语言特性融合**:IronPython 2.6实现了Python 2.6的标准语法和大部分功能,...

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

    在.NET环境中,IronPython提供了与C#、VB.NET等其他.NET语言的互操作性,使得Python开发者可以利用.NET丰富的类库和工具。 标题中的"IronPython各个支持平台对应的DLL资源"指的是IronPython在不同平台上运行所需的...

    IronPython in Action 2012.pdf

    - **Python 和 .NET 的结合**:通过 IronPython,开发者可以在 .NET 环境中编写 Python 代码,并访问所有的 .NET 类库,从而将 Python 的简洁性和灵活性与 .NET 的丰富功能结合起来。 - **IronPython 的特性与优势**...

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

    这个压缩包包含的是C#实现的IronPython脚本引擎源码以及相关的示例,对于想要深入了解Python在.NET环境中的应用或者希望在C#项目中集成Python脚本能力的开发者来说,这是一个宝贵的资源。 首先,我们来谈谈C#。C#是...

    IronPython-2.7.11.rar

    IronPython是Python编程语言的一个实现,它允许开发者在.NET平台上编写和运行Python代码。这个压缩包文件"IronPython-2.7.11.rar"包含了IronPython的版本2.7.11,这是一个针对.NET Framework的兼容性更新,旨在提供...

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

    安装过程中,系统会自动处理依赖项,并将必要的组件注册到.NET Framework中,使用户能够在命令行或者集成开发环境中使用IronPython。 【IronPython-2.0.1-Src.zip】包含的是IronPython2.0.1的源代码。对于开发者来...

    IronPython.7z

    总结来说,IronPython是.NET环境中一个重要的Python实现,它为开发者提供了在.NET平台上使用Python的便利,同时也带来了与.NET生态系统的广泛集成和高性能的优势。通过这个压缩包,用户可以同时体验到Python 2.7的...

    IronPython和C#交互

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

    IronPython-2.7.7-win.zip

    IronPython是Python编程语言...如果你是开发人员,可以将IronPython整合到你的.NET项目中,利用其动态性和灵活性来编写部分代码。如果你是Python爱好者,你可以尝试在Windows环境下体验.NET平台带来的便利和性能提升。

    环境“IronPython|2.7-32”似乎未正确配置或缺失

    标题中的"IronPython|2.7-32"指的是IronPython的一个特定版本,它是一个开源实现的Python解释器,能够运行在.NET Framework和.NET Core上。IronPython 2.7-32是针对32位操作系统的版本。描述中提到的问题是关于...

    VS2010调用IronPython脚本的示例代码

    在本文中,我们将深入探讨如何在Visual Studio 2010 (VS2010) 中使用C# 4.0来调用IronPython脚本,这是一个强大的动态语言运行时,能够让我们在.NET环境中执行Python代码。IronPython使得C#开发者能够轻松地利用...

    Manning.IronPython.in.Action

    《IronPython in Action》是由Manning出版社出版的一本专业书籍,专注于探讨Python编程语言在.NET框架中的应用,即IronPython。这本书旨在帮助开发者理解和利用IronPython这一强大的工具,它允许Python程序员充分...

    IronPython-2.7.5

    在本文中,我们将深入探讨 IronPython 的工作原理、它如何实现 C# 和 Python 的互操作性,以及它在实际开发中的应用。 首先,IronPython 是一种基于 .NET 的 Python 实现,由 Microsoft 的 Jim Hugunin 开发。它...

Global site tag (gtag.js) - Google Analytics