Python for .NET 是一個可以讓 Python 程序員近乎無縫的集成 .NET 通用語言環境 CLR 和以及為 .NET 開發者提供一個強大的應用腳本工具。通過這個項目你可在 .NET 中完全使用 Python 來編寫整個應用,使用 .NET 服務和組件。這個包并沒有用 CLR 語言實現一個 Python,也不將 Python 代碼生成受管代碼 (IL),只是在 .NET 環境中集成了 C Python 引擎。
到底什么是 Python for .NET 呢?
我想我特別想知道的是 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]()