华南俳烁实业有限公司

python

當前位置:中華考試網(wǎng) >> python >> python編程基礎 >> 文章內(nèi)容

python與Javascript有什么不同?

來源:中華考試網(wǎng)  [2020年9月27日]  【

 python與Javascript有什么不同? 

  基本概念

  Python和Javascript都是腳本語言,所以它們有很多共同的特性,都需要解釋器來運行,都是動態(tài)類型,都支持自動內(nèi)存管理,都可以調(diào)用eval()來執(zhí)行腳本等等腳本語言所共有的特性。

  然而它們也有很大的區(qū)別,Javascript這設計之初是一種客戶端的腳本語言,主要應用于瀏覽器,它的語法主要借鑒了C,而Python由于其“優(yōu)雅”,“明確”,“簡單”的設計而廣受歡迎,被應用于教育,科學計算,web開發(fā)等不同的場景中。

  編程范式

  Python和Javascript都支持多種不同的編程范式,在面向?qū)ο蟮木幊躺厦,它們有很大的區(qū)別。Javascript的面向?qū)ο笫腔谠?prototype)的, 對象的繼承是由原型(也是對象)創(chuàng)建出來的,由原型對象創(chuàng)建出來的對象繼承了原型鏈上的方法。而Python則是中規(guī)中矩的基于類(class)的繼承,并天然的支持多態(tài)(polymophine)。

python學習課程預約提醒

  • 地區(qū):
  • 姓名:
  • 手機:

  因為是基于對象的繼承,在Javascript中,我們沒有辦法使用類成員empCount,只好聲明了一個全局變量,當然實際開發(fā)中我們會用更合適的scope。注意Javascript創(chuàng)建對象需要使用new關鍵字,而Python不需要。

  除了原生的基于原型的繼承,還有很多利用閉包或者原型來模擬類繼承的Javascript OO工具,因為不是語言本身的屬性,我們就不討論了。

  線程模型

  在Javascript的世界中是沒有多線程的概念的,并發(fā)使用過使用事件驅(qū)動的方式來進行的, 所有的JavaScript程序都運行在一個線程中。在HTML5中引入web worker可以并發(fā)的處理任務,但沒有改變Javascript單線程的限制。

  Python通過thread包支持多線程。

  不可改變類型 (immutable type)

  在Python中,有的數(shù)據(jù)類型是不可改變的,也就意味著這種類型的數(shù)據(jù)不能被修改,所有的修改都會返回新的對象。而在Javascript中所有的數(shù)據(jù)類型都是可以改變的。Python引入不可改變類型我認為是為了支持線程安全,而因為Javascript是單線程模型,所以沒有必要引入不可改變類型。

  當然在Javascript可以定義一個對象的屬性為只讀。

  在ECMAScript5的支持中,也可以調(diào)用Object的freeze方法來是對象變得不可修改。

  Object.freeze(obj)

  數(shù)據(jù)類型

  Javascript的數(shù)據(jù)類型比較簡單,有object、string、boolean、number、null和undefined,總共六種

  Python中一切均為對象,像module、function、class等等都是。

  Python有五個內(nèi)置的簡單數(shù)據(jù)類型bool、int、long、float和complex,另外還有容器類型,代碼類型,內(nèi)部類型等等。

  布爾

  Javascript有true和false。Python有True和False。它們除了大小寫沒有什么區(qū)別。

  字符串

  Javascript采用UTF16編碼。

  Python使用ASCII碼。需要調(diào)用encode、decode來進行編碼轉(zhuǎn)換。使用u作為前綴可以指定字符串使用Unicode編碼。

  數(shù)值

  Javascript中所有的數(shù)值類型都是實現(xiàn)為64位浮點數(shù)。支持NaN(Not a number),正負無窮大(+/-Infiity)。

  Python擁有諸多的數(shù)值類型,其中的復數(shù)類型非常方便,所以在Python在科研和教育領域很受歡迎。這應該也是其中一個原因吧。Python中沒有定義NaN,除零操作會引發(fā)異常。

  列表

  Javascript內(nèi)置了array類型(array也是object)

  Python的列表(List)和Javascript的Array比較接近,而元組(Tuple)可以理解為不可改變的列表。

  除了求長度在Python中是使用內(nèi)置方法len外,基本上Javascript和Python都提供了類似的方法來操作列表。Python中對列表下標的操作非常靈活也非常方便,這是Javascript所沒有的。例如l[5:-1],l[:6]等等。

  字典、哈希表、對象

  Javascript中大量的使用{}來創(chuàng)建對象,這些對象和字典沒有什么區(qū)別,可以使用[]或者.來訪問對象的成員?梢詣討B(tài)的添加,修改和刪除成員?梢哉J為對象就是Javascript的字典或者哈希表。對象的key必須是字符串。

  Python內(nèi)置了哈希表(dictS),和Javascript不同的是,dictS可以有各種類型的key值。

  空值

  Javascript定義了兩種空值。 undefined表示變量沒有被初始化,null表示變量已經(jīng)初始化但是值為空。

  Python中不存在未初始化的值,如果一個變量值為空,Python使用None來表示。

責編:hym
  • 會計考試
  • 建筑工程
  • 職業(yè)資格
  • 醫(yī)藥考試
  • 外語考試
  • 學歷考試
漳州市| 房山区| 兰西县| 梓潼县| 东台市| 西峡县| 江山市| 丹阳市| 凤翔县| 武川县| 商水县| 祁门县| 黑河市| 体育| 清水河县| 刚察县| 诏安县| 黄梅县| 崇州市| 永仁县| 呼图壁县| 井冈山市| 峨眉山市| 荔波县| 涡阳县| 安化县| 乃东县| 婺源县| 怀柔区| 曲靖市| 靖安县| 昌宁县| 南丰县| 桂阳县| 根河市| 隆尧县| 鄂尔多斯市| 新蔡县| 简阳市| 祥云县| 集贤县|