Iron Python:Iron Python 的好用法是什么
我对Python很感兴趣,但我在一个.NET的环境中工作,所以我在研究Iron Python,想知道它的用途是什么。
你能用它写一个应用程序吗?还是说它只是用来给你的应用程序添加一个脚本语言?
你们是怎么使用它的呢?
12 个回答
我觉得用IronPython和WPF来设计图形用户界面(GUI)是最有效率的方法。下面展示的几乎所有应用程序都是用IronPython写的。只有很小一部分是用C#或C++/CLI写的,主要是为了提高性能。
当然,你会错过一些WPF和C#的整合功能,但在提高工作效率方面,你会得到更多的好处。
IronPython比CPython更容易扩展。你只需要在你的C++代码上加一个小的C++/CLI包装器就行了。而CPython没有这么简单的方式。这就是我开始使用IronPython的原因,因为我厌倦了在CPython中为我的C++代码写包装器。像Boost.Python、SWIG之类的工具对我来说都不太好用。
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 之间有一些重要的 区别,需要注意。例如,垃圾回收(我前几天就遇到过这个问题...)。
可以是其中一个,也可以两个都用 :)
我不敢说IronPython有什么特定的“目的”,但它确实可以用来写应用程序,也可以在更大的.NET应用程序中进行脚本编写。
除此之外,它还是一个很方便的方式,可以让Python开发者慢慢适应.NET的世界。(为什么不顺便学学C#呢?快来吧,这里很不错...)