基于C語言的Python編譯
也許大家對于Python編譯還不是很了解,看完本文后對您一定會大有幫助,下文除了學(xué)習(xí)Python編譯的基本性質(zhì)外還對Python編譯的新特性進(jìn)行全面研究,希望大家能夠?qū)W習(xí)研究。
之所以選中 Python(大蟒蛇的意思)作為程序的名字,是因為他是一個Monty Python的飛行馬戲團(tuán)的愛好者。
ABC是由Guido參加設(shè)計的一種教學(xué)語言。
就Guido本人看來,ABC 這種語言非常優(yōu)美和強大,是專門為非專業(yè)程序員設(shè)計的。但是ABC語言并沒有成功,究其原因,Guido 認(rèn)為是非開放造成的。Guido 決心在 Python 中避免這一錯誤(的確如此,Python 與其它的語言如C、C++和Java結(jié)合的非常好)。同時,他還想實現(xiàn)在 ABC 中閃現(xiàn)過但未曾實現(xiàn)的東西。
就這樣,Python在Guido手中誕生了。實際上,***個實現(xiàn)是在Mac機上。可以說,Python是從ABC發(fā)展起來,主要受到了Modula-3(另一種相當(dāng)優(yōu)美且強大的語言,為小型團(tuán)體所設(shè)計的)的影響。并且結(jié)合了Unix shell和C的習(xí)慣。Python在編程語言中的定位很多大規(guī)模軟件開發(fā)計劃例如 Zope, Mnet 及 BitTorrent. Google都在廣泛地使用它。
通常認(rèn)為,Python是一種解釋性的語言,但是這種說法是不正確的,實際上,Python在執(zhí)行時,首先會將.py文件中的源代碼編譯成Python的byte code(字節(jié)碼),然后再由Python Virtual Machine來執(zhí)行這些編譯好的byte code。
這種機制的基本思想跟Java,.NET是一致的。然而,Python Virtual Machine與Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一種更高級的Virtual Machine。這里的高級并不是通常意義上的高級。
不是說Python的Virtual Machine比Java或.NET的功能更強大,而是說和Java 或.NET相比,Python的Virtual Machine距離真實機器的距離更遠(yuǎn)?;蛘呖梢赃@么說,Python的Virtual Machine是一種抽象層次更高的Virtual Machine。
基于C的Python編譯出的字節(jié)碼文件,通常是.pyc格式。在實際開發(fā)中,python常被昵稱為膠水語言,這不是說他會把你的手指粘住,而是說他能夠很輕松的把用其他語言制作的各種模塊(尤其是C/C++)輕松地聯(lián)結(jié)在一起。#t#
常見的一種應(yīng)用情形是,使用python快速生成程序的原型(有時甚至是程序的最終界面),然后對其中有特別要求的部分,用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,速度要求非常高,就可以用C++重寫。
可擴充性可說是Python作為一種編程語言的特色。新的內(nèi)置模塊(module)可以用C 或 C++寫成。而我們也可為現(xiàn)成的模塊加上Python的接口。Python可以使用戶避免過分的語法的羈絆而將精力主要集中到所要實現(xiàn)的程序任務(wù)上。
Python編譯也被稱為是一門清晰的語言。因為它的作者在設(shè)計它的時候,總的指導(dǎo)思想是,對于一個特定的問題,只要有一種***的方法來解決就好了。這在由Tim Peters寫的python格言(稱為The Zen of Python)里面表述為。有意思的是,這正好和Perl語言(另一種功能類似的高級動態(tài)語言)的中心思想TMTOWTDI(There's More Than One Way To Do It)完全相反。
這似乎是人們常把Perl和Python互相比較的重要原因。Python編譯是一種清晰的語言的另一個意思是,它的作者有意的設(shè)計限制性很強的語法。使得不好的編程習(xí)慣(例如if語句的下一行不向右縮進(jìn))都不能通過編譯。這樣有意的強制程序員養(yǎng)成良好的編程習(xí)慣。其中很重要的一項就是Python的縮進(jìn)規(guī)則。