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