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