IronPython

IronPython(铁蟒)是.NET平台上的Python的CodeName,该语言尚处在Alpha预览版(pre-alpha preview release)阶段。它拥有一个完全动态的交互式解释器,可以支持所有的.NET类型库,并且集成了.NET Framework的诸多优点,甚至可以用Python的类来扩展.NET类。IronPython遵从ECMA的CLI标准( ECMA-335),可以运行在 Microsoft .NET FrameworkMONO上。

    IronPython比传统的Python快1.8倍左右(相对于Python 2.4),并且和传统的Python一样是完全动态的;但相对于传统的Python,IronPython却支持可选的静态编译功能,静态编译过的IronPython程序就形成了常规的.NET可执行文件(.EXE文件)。甚至还可以将IronPython程序静态编译为.NET动态链接库(.dll文件)并且供C#和VB.NET等.NET语言调用。由于IronPython程序集中仅包含与系统库无关的托管代码,因此IronPython程序集是完全可验证的。

    不过,目前的IronPython还未完工,很多支持库还有待完成和完善,而且它需要.NET Framework 2.0的支持。对IronPython的源代码进行编译,也需要Visual Studio 2005的支持(IronPython提供的是msbuild构建文件);在这一点上,如果IronPython能够提供NAnt脚本等开源构建支持的话,相信还能引起更多朋友的关注。

作为一门非常流行的动态语言,Python在解决某类问题时显得异常的方便。IronPython则是Python在.NET Framework上的实现,虽初出茅庐,但已经显示出了他的强大力量。本文不是介绍IronPython的使用方法,而是介绍如何在C#这个.NET最流行的语言中使用IronPython的动态特性,来处理“动态”的表达式。所谓“动态”的表达式,是指类似“a + b - c”这类的以字符串形式提供的运算表达式。

using  System;
using  System.Collections.Generic;
using  System.Text;
using  IronPython.Hosting;

namespace  PythonDemo
{
  
class  Program
  {
    
delegate   int  MyExpressionDelegate( int  a,  int  b);
    
static   void  Main( string [] args)
    {
      PythonEngine pe 
=   new  PythonEngine();
      MyExpressionDelegate expression 
=  
        pe.CreateLambda
< MyExpressionDelegate > ( " a + b " );
      
int  a  =   10 ;
      
int  b  =   5 ;
      
int  c  =  expression(a, b);
      Console.WriteLine(c);
    }
  }
}

你可能感兴趣的:(python)