Python for .NET 是一个可以让 Python 程序员近乎无缝的集成 .NET 通用语言环境 CLR 和以及为 .NET 开发者提供一个强大的应用脚本工具。通过这个项目你可在 .NET 中完全使用 Python 来编写整个应用,使用 .NET 服务和组件。这个包并没有用 CLR 语言实现一个 Python,也不将 Python 代码生成受管代码 (IL),只是在 .NET 环境中集成了 C Python 引擎。
我想我特别想知道的是 Python for .NET 与您自己对 CPython 的 PythonWin 和 PythonCOM 扩展(它们似乎能够控制 Windows 的内部)之间的关系是怎样的。Python for .NET 是一种编译器和运行时,它在微软的 .NET 平台上实现了 Python。.NET 平台提供了一个运行时和元数据系统,它们设计成允许完整的语言互操作性,但要实现这一点,语言必须能在该运行时中使用。
例如,如果 Python 类是公用的以便 Visual Basic 程序员能够继承它,Python 类就必须以 .NET 术语而不是以 CPython 术语来实现和描述。
Python .NET 的优点只是可以与 .NET 框架互操作。这里仍然有许多缺陷,主要由于实现还不成熟而导致。但这确实只是时间的问题。我们仍处于开发和调试的 beta 阶段。
Python for .NET 肯定有一些主要的优势,例如方便的语言间通信和多语言应用开发。但为什么您说比已经有的那些 -- 例如 Python+C+SWIG 要好呢(当然是假设情况)。
Python for .NET 将 Python 脚本编译成外部虚拟机的格式。对于 .NET VM 是否将支持 Stackless 和 Vyper 的某些外来特性,例如延续性、生成器、协同程序、尾递归或延缓求值,您认为会这样吗?
示例代码:
from System.Collections.Generic import Dictionary
from System import *
dict1 = Dictionary[String, String]()
dict2 = Dictionary[String, Int32]()
dict3 = Dictionary[String, Type]()