具體說明Python核心編程框架
下面文章主要介紹Python核心編程的構(gòu)造和技巧,Python確實(shí)是一種十分精彩又強(qiáng)大的語言,可以通過在不同的平臺(tái)上進(jìn)行程序的運(yùn)行和操作,即使對(duì)不了解開發(fā)編程的用戶來說Python確實(shí)是一門入手的好語言。
所以先把它們放進(jìn)這段代碼,在后面會(huì)針對(duì)它們提一些問題。第二行比較有趣,導(dǎo)入 wxPython 的 wx 庫(kù)。當(dāng)然,wx 庫(kù)(基本 wxPython 聲明)包括基本類,如框架和應(yīng)用程序。
/注意這些行的結(jié)尾沒有分號(hào)。如果您編寫過 Perl 程序,那您要花費(fèi)一點(diǎn)功夫來熟悉 Python 的輸入習(xí)慣。但等等,它對(duì)您來說是陌生的。在第三行,定義了第一個(gè) Python 類 -- main_window。main_window 類是在 wx 模塊中定義的 wxFrame 類的派生類。正如您猜想的,任何窗口都是 wxFrame 類。
在第四行,定義了初始化方法,main_window 需要定義的唯一方法(當(dāng)然,其它的在 wxFrame 類中)。初始化方法取參數(shù) parent、id、title 以及當(dāng)然還有(作為該對(duì)象的引用的)self。self 參數(shù)是所有Python核心編程法的第一個(gè)參數(shù)。
到現(xiàn)在為止,如果您編寫過 C/C++,您一定奇怪為什么沒有花括號(hào)。是很奇怪,Python 把縮進(jìn)當(dāng)作重要的句法。任何有子語句的語句以冒號(hào)結(jié)束,所有該行下的縮進(jìn)行都屬于以該冒號(hào)終止的語句。
當(dāng)縮進(jìn)回復(fù)到原來的縮進(jìn)時(shí),這一塊就完成了。更為奇怪的是,這種安排實(shí)際上很好用,剛開始編程的程序員發(fā)現(xiàn),這要比用花括號(hào)來說明結(jié)構(gòu)要容易。幸運(yùn)地是,這還意味著更少的擊鍵次數(shù),所以老程序員也能接受它。
所以縮進(jìn)的第 5、6 和 7 行屬于在第 4 行中定義的方法。它們分別調(diào)用 wxFrame 父類的初始化例程(實(shí)際進(jìn)行設(shè)置一個(gè)窗口的所有繁重工作),定義一個(gè)控件以適合新的主窗口,以及確保窗口是可見的。
wxPython 會(huì)重新調(diào)整父窗口的大小,除非專門告訴不要這樣做。如果您曾編寫過任何 Microsoft Windows 代碼,通過重新調(diào)整控件大小來匹配父窗口,那您會(huì)很快喜歡 wxPython。
第 6 行的實(shí)際意義是完成一個(gè)如同 Notepad 一樣的編輯器。這還不算什么。用 C/C++ 代碼,則需要更多才能實(shí)現(xiàn),不是嗎?記住 -- 我們?cè)谶@做的不是固定大小的對(duì)話框,它是真正在窗口主體中和可調(diào)整大小的帶編輯器的 Windows- 化應(yīng)用程序。
讓我們繼續(xù)。第 8 行定義了由 wxApp 類派生的 App 對(duì)象。它指定了應(yīng)用程序?qū)ο螅?dāng)運(yùn)行時(shí),創(chuàng)建一個(gè) main_window 對(duì)象,并將它設(shè)置為頂部窗口。最后定義完類,創(chuàng)建應(yīng)用程序?qū)ο?,開始運(yùn)行它的主循環(huán)。
如果您做過任何 C/C++ Windows 編程,會(huì)認(rèn)識(shí)到 MainLoop 方法是所有 Windows 程序的正常事件循環(huán)。這個(gè)啟動(dòng)代碼的風(fēng)格確實(shí)與腳本語言保持一致。記住,Python 解釋器逐行讀取代碼,并邊讀邊執(zhí)行它。所以,一旦定義了類,我們只需在腳本中調(diào)用它。
這就是 它。在這十五行代碼中,實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的文本編輯器,這段代碼無需修改就可以在 Windows 或 UNIX 上運(yùn)行。而且很容易添加更多特性,這太好了,在下一節(jié)將要講述這些。
您可能認(rèn)為,“解釋型語言,效率不高。對(duì)于較大的程序,執(zhí)行起來會(huì)很慢?!痹谝欢ǔ潭壬?,這是正確的。事實(shí)上,任何影響性能的代碼通常用 C/C++ 重新實(shí)現(xiàn),并鏈接到 Python核心編程,這是很容易做的。所以 Python 通常用作綁定功能性模塊和 GUI 顯示(或應(yīng)用程序服務(wù)器功能,如果您需要該功能)的粘合劑。但作為粘合劑,Python 是非常有效的。
您可以在很短的時(shí)間內(nèi)用 Python 實(shí)現(xiàn)真正的程序,由于其面向?qū)ο蠛透袷椒矫嬗邢薜膭?chuàng)造機(jī)會(huì),它們通??墒褂煤脦讉€(gè)星期。而且,如果您懷疑使用解釋型語言將大程序結(jié)合在一起的想法,那您不妨考慮一下 Microsoft Word 的早期版本是如何實(shí)現(xiàn)的。
至少最近的 Windows 的 Word 版本 6.0,其 Word Basic 函數(shù)事實(shí)上只是編譯過的代碼;而 GUI 是由 pcode 解釋性型語言構(gòu)建的。(MS Word 6.0 是用 Word Basic 編寫的,很有效,這是一個(gè)很聰明的設(shè)計(jì),其原因之一 -- 它是最早用內(nèi)置解釋器的桌面程序。)
這里您所損失的是在性能方面(實(shí)際上,很少),但您可以很容易地通過簡(jiǎn)化實(shí)現(xiàn)和(更重要)簡(jiǎn)化定制來彌補(bǔ)。事實(shí)上,通過包含 Python 您已經(jīng)自動(dòng)包括了易于展現(xiàn)給您的用戶的腳本語言,同時(shí),對(duì)于編程的新手來說,該語言也證明了其易于學(xué)習(xí)。
如果鉆研它,可以用比您現(xiàn)在花費(fèi)的要少的功夫創(chuàng)作出世界級(jí)的軟件。因?yàn)?,如果該語言能為 Microsoft 服務(wù),那么,它也能為您服務(wù)!無論如何,言歸正傳,這里向您展示一個(gè)程序,它事實(shí)上做一些值得做的事情。這個(gè)程序讓您創(chuàng)建一個(gè)稱之為項(xiàng)目的文本文件列表。您可以編輯和保存它們。
更重要的是,您可以很容易地看到如何進(jìn)一步增強(qiáng)基本組織器。我使用一個(gè)擴(kuò)展版本為 CVS(標(biāo)準(zhǔn)開放源碼版本控制系統(tǒng))的前端。代碼在下面。我們(仍然相當(dāng)?。┑膽?yīng)用程序從 15 行擴(kuò)展到大約 300行,但它現(xiàn)在能實(shí)現(xiàn)許多事情。
【編輯推薦】