Python for .NET 是一個可以讓 Python 程序員近乎無縫的集成 .NET 通用語言環(huán)境 CLR 和以及為 .NET 開發(fā)者提供一個強大的應(yīng)用腳本工具。通過這個項目你可在 .NET 中完全使用 Python 來編寫整個應(yīng)用,使用 .NET 服務(wù)和組件。這個包并沒有用 CLR 語言實現(xiàn)一個 Python,也不將 Python 代碼生成受管代碼 (IL),只是在 .NET 環(huán)境中集成了 C Python 引擎。
到底什么是 Python for .NET 呢?
我想我特別想知道的是 Python for .NET 與您自己對 CPython 的 PythonWin 和 PythonCOM 擴展(它們似乎能夠控制 Windows 的內(nèi)部)之間的關(guān)系是怎樣的。Python for .NET 是一種編譯器和運行時,它在微軟的 .NET 平臺上實現(xiàn)了 Python。.NET 平臺提供了一個運行時和元數(shù)據(jù)系統(tǒng),它們設(shè)計成允許完整的語言互操作性,但要實現(xiàn)這一點,語言必須能在該運行時中使用。
例如,如果 Python 類是公用的以便 Visual Basic 程序員能夠繼承它,Python 類就必須以 .NET 術(shù)語而不是以 CPython 術(shù)語來實現(xiàn)和描述。
Python .NET 的優(yōu)點只是可以與 .NET 框架互操作。這里仍然有許多缺陷,主要由于實現(xiàn)還不成熟而導致。但這確實只是時間的問題。我們?nèi)蕴幱陂_發(fā)和調(diào)試的 beta 階段。
Python for .NET 肯定有一些主要的優(yōu)勢,例如方便的語言間通信和多語言應(yīng)用開發(fā)。但為什么您說比已經(jīng)有的那些 -- 例如 Python+C+SWIG 要好呢(當然是假設(shè)情況)。
Python for .NET 將 Python 腳本編譯成外部虛擬機的格式。對于 .NET VM 是否將支持 Stackless 和 Vyper 的某些外來特性,例如延續(xù)性、生成器、協(xié)同程序、尾遞歸或延緩求值,您認為會這樣嗎?
示例代碼:
from System.Collections.Generic import Dictionary
from System import *
dict1 = Dictionary[String, String]()
dict2 = Dictionary[String, Int32]()
dict3 = Dictionary[String, Type]()