我对python很感兴趣,但是我在.NET环境中工作,所以我正在研究Iron Python,并想知道它将用于什么。
你能写一个应用程序吗?或者是否为您的应用添加脚本语言?
你们是如何使用它的?
答案 0 :(得分:25)
其中一个或两个:)
我不会声称知道IronPython的特定“目的”,但它肯定可以用于编写应用程序,而可以用于编写脚本更大的.NET应用程序。
除此之外,它还可以轻松地将Python开发人员简化为.NET世界。 (为什么不同时学习C#?来吧,水很可爱......)
答案 1 :(得分:8)
IronPython的最大好处是它可以将Python和.NET的世界紧密结合在一起。
如果你有用C#编写的库(程序集),你可以直接将它们导入IronPython并使用它们,如下所示:
import clr
clr.AddReferenceToFileAndPath('MyAssembly.dll')
import MyNamespace
c = MyNamespace.MyClass()
c.MyFunction()
这非常适合在编写脚本或甚至与IronPython解释器交互使用时重用现有的.NET代码。
普通的CPython需要Python .NET来做同样或类似的事情。根据我的经验,Python .NET大部分时间都可以工作,但并非总是如此,IronPython在从Python访问.NET方面提供了更为精彩的体验。
IronPython可能总是在标准库支持等方面落后于CPython的参考实现,但总的来说开发并不落后,因为它很难与CPython背景一起工作。
最后,CPython和IronPython之间有一些实质性的differences,人们应该注意这一点。示例 - 垃圾收集(前几天咬我...)。
答案 2 :(得分:7)
使用WPF的IronPython是设计我所知道的GUI的最有效方式。几乎所有下图所示的应用程序都是用IronPython编写的。出于性能原因,在C#或C ++ / CLI中只完成非常小的部分。
当然,你确实错过了一些WPF / C#集成,但你在生产力方面获得了更多。
IronPython也比CPython更容易扩展。您可以使用C ++代码并在其上添加一个小型C ++ / CLI包装器。 CPython没有什么比这简单。这就是我开始使用IronPython的原因,因为我厌倦了在CPython中为我的C ++代码编写包装器。 Boost.Python,SWIG等对我不起作用。
答案 3 :(得分:6)
答案 4 :(得分:4)
我们将其用作软件内部的嵌入式语言。 我的博客上有一篇文章,但最近改用了一个新系统。您可以在此处找到存档版本(带有损坏的图像链接):
我们的现场工程师现在使用嵌入式语言动态测试, 我们的质量保证人们使用它来创建小脚本来测试硬件的所有功能等....
希望这有帮助。
答案 5 :(得分:4)
我认为Iron系列语言主要用于为平台添加更多风格,允许您使用您熟悉的语言进入.NET。它为将不同背景的新人带入.NET而降低了很多标准
即使语法是Python,实现仍然建立在CLR之上,如果您决定参加IronPython项目而不是说C#,最终产品将没有太大差异。
我有一些使用IronPython的经验并且觉得很好用(当然我有点喜欢这种语言)。 IronPython现在被微软视为一等公民,这也是您使用它时的印象。使用它的一个缺点是它没有像两种主要语言那样被广泛采用,在协作和维护代码库方面会产生一些问题。
我发现在执行首次在Python中实现的搜索算法的.NET端口时它特别有用。
关于向您的应用添加脚本功能,这可能不是IronPython的初衷,但它已经完成。 Umbraco CMS具有(或至少具有)使用Python作为其平台内的动态脚本语言来创建小部件的能力。有一个非常简洁的功能。
你应该继续尝试一下......在皮带上安装更多工具总是好的:)
答案 6 :(得分:2)
您可以使用它来编写在.NET平台上运行的Python代码。这对Python有用的任何东西都有好处。
Python语言是Python语言,无论如何。 IronPython是该语言的运行时实现 - 编译源代码的支持代码,创建一个虚拟机来执行生成的.pyc文件中的字节码,与OS通信以便发出命令将参数划分为sys.argv
,以及所有其他有趣的东西。 (好吧,好吧,.NET平台本身也做了很多工作。:))
答案 7 :(得分:2)
我对IronPython的体验是将其用作引擎的一部分,可以在安装基础.Net应用程序后进行更改。 在Python的帮助下,我们描述了很多业务规则,可以从两个系统安装中进行更改。部分IronPython被用作插件语言。
与脚本语言的区别 - 编译后IronPython作为CLR代码执行。
答案 8 :(得分:2)
首先:IronPython实际上更像是编译器而不是最严格意义上的解释器 - 它将用于从python源文件生成.NET程序集。所以,是的,您可以编写应用程序以及.NET Framework可以执行的大多数操作。
IronPython的最大好处之一是它(有效地)没有GIL - 这意味着如果你要编写Python代码并且它是多线程的 - 你通常可以获得比CPython更好的性能无需跨越边界生成多个进程和pickle对象。它没有解决并发问题,但.NET提供了更强大的构造来处理它。我认为这是一个非常小众的利基,但肯定存在。
IronPython的python.org wiki页面列出了一系列关键区别:
答案 9 :(得分:1)
您可以在其中编写应用程序,您可以将其用作应用程序中的脚本语言。
它用于访问现有的Python库,如果需要,可以用Python编写代码的一部分,如果.NET语言似乎不适合该工作。
答案 10 :(得分:1)
我认为Resolver Systems使用IronPython构建了他们的产品。所以IronPython肯定会有一些现实世界的使用。
他们也将{NumPy]移植到IronPython和.Net。这肯定会扩大IronPython的吸引力。
答案 11 :(得分:1)
您可以将它用于很酷的事情,例如在您的应用程序中使用嵌入式Web服务器,可以使用其中一个可用的Python Web框架进行开发。开发比在应用程序中托管ASP.NET Web服务器更容易,更顺畅。例如,CherryPy附带了一个内置的Web服务器,通过一些小的修改,它可以与IronPython一起使用。