针对小规模项目的IronPython与C#

时间:2009-01-30 23:59:35

标签: c# .net python ironpython

我目前在大多数编程项目中都使用Python(主要是小程序和原型的快速开发)。我想花时间学习一种语言,这种语言可以让我灵活地在机会出现时使用各种Microsoft工具和API。我正在尝试在IronPython和C#之间做出决定。由于Python是我最喜欢的编程语言(主要是因为它的简洁和清晰的语法),IronPython听起来是理想的选择。在阅读了一下之后,我有几个问题。

对于那些使用过IronPython的人来说,是不是已经不清楚经典Python的结局和.NET的开始?例如,.NET库和Python标准库之间的功能似乎有很大的重叠,所以当我需要进行字符串操作或解析XML时,我不清楚我应该使用哪个库。另外,我不清楚我应该在代码中使用Python与.NET数据类型。例如,我将在代码中使用以下哪一项?

d = {} 

d = System.Collections.Hashtable()

(顺便说一下,如果我做了很多像后者这样的事情,我可能会失去一些简洁性,这就是我首先支持Python的原因。)

另一个问题是,许多Microsoft的开发人员工具,如.NET CF和Xbox XNA,在IronPython中不可用。是否有更多的情况,IronPython不会给我C#的全部范围?

2 个答案:

答案 0 :(得分:11)

我在IronPython中使用C#构建了一个大型应用程序。

几乎完全无缝。 IronPython中唯一缺少真正“python”感觉的东西是基于C的库(必须使用.NET)和IDLE。

语言与其他.NET语言交互,如梦......特别是如果您嵌入解释器并通过引用绑定变量。

顺便说一句,IronPython中的哈希声明为:

d = {}

请注意,它实际上是一个IronPython.Dict对象,而不是C#字典。也就是说,如果将转换传递给.NET类,转换通常会无形地工作,如果需要显式转换,那么内置函数就可以了。

总而言之,如果你有理由,可以使用.NET的一种很棒的语言。

只是一句忠告:避免像瘟疫那样的Visual Studio IronPython IDE。我发现自动线完成部分在压痕,空间和标签之间搞砸了。现在 - 这是一个插入代码中的难以追踪的错误。

答案 1 :(得分:3)

我建议看看Boo [ http://boo.codehaus.org/],这是一种基于.NET的语言,其语法受Python的启发,但它提供了全面的.NET 3.5功能。

IronPython非常适合使用以.NET为中心的库 - 但由于语言输入方式的潜在差异,它不适合创建它们。由于Boo在编译时进行基于推理的键入,除非显式请求了鸭子类型(或者用户给出了特定类型),它允许您构建可以从C#(和其他语言)代码中轻松使用的以.NET为中心的库,哪个IronPython不适合;另外,因为它必须在运行时进行较少的内省,所以Boo编译为更快的代码。