python和Javascript都是腳本語言,所以它們有很多共同的特性,都需要解釋器來運(yùn)行,都是動態(tài)類型,都支持自動內(nèi)存管理,都可以調(diào)用eval()來執(zhí)行腳本等等腳本語言所共有的特性。
然而它們也有很大的區(qū)別,Javascript這設(shè)計之初是一種客戶端的腳本語言,主要應(yīng)用于瀏覽器,它的語法主要借鑒了C,而Python由于其“優(yōu)雅”,“明確”,“簡單”的設(shè)計而廣受歡迎,被應(yīng)用于教育,科學(xué)計算,web開發(fā)等不同的場景中。
編程范式
Python和Javascript都支持多種不同的編程范式,在面向?qū)ο蟮木幊躺厦?,它們有很大的區(qū)別。Javascript的面向?qū)ο笫腔谠?prototype)的,對象的繼承是由原型(也是對象)創(chuàng)建出來的,由原型對象創(chuàng)建出來的對象繼承了原型鏈上的方法。而Python則是中規(guī)中矩的基于類(class)的繼承,并天然的支持多態(tài)(polymophine)。
python中
01classEmployee:
02'Commonbaseclassforallemployees'
03empCount=0##類成員
04
05def__init__(self,name,salary):
06self.name=name
07self.salary=salary
08Employee.empCount+=1
09
10defdisplayCount(self):
11print"TotalEmployee%d"%Employee.empCount
12
13defdisplayEmployee(self):
14print"Name:",self.name,",Salary:",self.salary
15##創(chuàng)建實(shí)例
16ea=Employee("a",1000)
17eb=Employee("b",2000)
JavaScript中
varempCount=0;
02//構(gòu)造函數(shù)
03functionEmployee(name,salary){
04this.name=name;
05this.salary=salary;
06this.empCount+=1;
07}
08
09Employee.prototype.displayCount=function(){
10console.log("TotalEmployee"+empCount);
11}
12
13Employee.prototype.displayEmployee=function(){
14console.log("Name"+this.name+",Salary"+this.salary);
15}
16//創(chuàng)建實(shí)例
17varea=newEmployee("a",1000);
18vareb=newEmployee("b",2000);
因?yàn)槭腔趯ο蟮睦^承,在Javascript中,我們沒有辦法使用類成員empCount,只好聲明了一個全局變量,當(dāng)然實(shí)際開發(fā)中我們會用更合適的scope。注意Javascript創(chuàng)建對象需要使用new關(guān)鍵字,而Python不需要。
除了原生的基于原型的繼承,還有很多利用閉包或者原型來模擬類繼承的JavascriptOO工具,因?yàn)椴皇钦Z言本身的屬性,我們就不討論了。
以上內(nèi)容為大家介紹了python培訓(xùn)之javascript的區(qū)別,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。