區(qū)別:1、Python用于開發(fā)科學(xué)應(yīng)用程序,JS用于Web開發(fā)及面向用戶的功能和服務(wù)器開發(fā)。2、Python依靠縮進(jìn)來定義代碼塊;JS使用“{}”。3、Python有四種基礎(chǔ)數(shù)據(jù)類型,三種數(shù)值類型;JS有六種原始數(shù)據(jù)類型,有兩種數(shù)值類型。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5&&python3版、Dell G3電腦。
JavaScript和Python這兩種語言非常流行和強(qiáng)大,但它們在部分語法的使用上卻有著一些不同,如果你恰好對這些區(qū)別對比感興趣,那么這篇文章中的內(nèi)容可能會(huì)為你提供一些幫助。
在本文中,你將了解到:
- Python和JavaScript的不同實(shí)際應(yīng)用程序。
- Python和JavaScript之間的主要語法和功能差異。
Python VS JavaScript:應(yīng)用上的差異
Python
由于它的強(qiáng)大和通用性,Python已成為全世界幾乎所有科學(xué)應(yīng)用中的重要工具。它是一種通用編程語言,支持不同的編程范式。
它被廣泛應(yīng)用于科學(xué)和專業(yè)應(yīng)用,包括數(shù)據(jù)科學(xué)、人工智能、機(jī)器學(xué)習(xí)、計(jì)算機(jī)科學(xué)教育、計(jì)算機(jī)視覺和圖像處理、醫(yī)學(xué)、生物學(xué),甚至天文學(xué)。
另外,Python還被用于Web開發(fā),雖然它主要用于后端開發(fā),例如應(yīng)用程序的服務(wù)器端。
JavaScript
Python可用于開發(fā)Web應(yīng)用程序的后端部分,但JavaScript可用于開發(fā)Web應(yīng)用程序的后端和前端。
前端是用戶看到并與之交互的應(yīng)用程序的一部分。每當(dāng)您看到網(wǎng)站或Web應(yīng)用程序或與之交互時(shí),這部分功能就是JavaScript在 “幕后”提供的。
同樣,當(dāng)你與移動(dòng)應(yīng)用進(jìn)行交互時(shí),您可能會(huì)使用JavaScript,因?yàn)橄馬eact Native這樣的框架可以讓我們使用JavaScript編寫可適應(yīng)不同平臺(tái)的應(yīng)用程序。
JavaScript在Web開發(fā)中得到了如此廣泛的應(yīng)用,因?yàn)樗且环N多功能語言,為我們提供了開發(fā)Web應(yīng)用程序組件所需的工具。
Python和JavaScript應(yīng)用程序之間的差異
簡單來講,從應(yīng)用程序角度來看,開發(fā)人員將Python用于開發(fā)科學(xué)應(yīng)用程序,同時(shí)使用JavaScript進(jìn)行Web開發(fā)及面向用戶的功能和服務(wù)器開發(fā)。
Python VS JavaScript: 語法差異
既然知道了它們在應(yīng)用層面上用途的區(qū)別,那我們就來看看它們的寫法和語法上有什么差異,下面我們將通過以下主要元素上的差異。
- 代碼塊
- 變量定義
- 變量命名協(xié)議
- 常量
- 數(shù)據(jù)類型和值
- 注釋
- 內(nèi)置的數(shù)據(jù)結(jié)構(gòu)
- 運(yùn)算符
- 輸入/輸出
- 條件語句
- For循環(huán)和While循環(huán)
- 函數(shù)
- 面向?qū)ο蟮木幊?/li>
Python和JavaScript中的代碼塊
每種編程語言都有自己的樣式來定義代碼塊。讓我們來看看它們在Python和JavaScript中的區(qū)別:
Python如何定義代碼塊
Python依靠縮進(jìn)來定義代碼塊。當(dāng)一系列連續(xù)的代碼行在同一級(jí)別縮進(jìn)時(shí),它們被視為同一代碼塊的一部分。
我們使用它來定義Python中的條件、函數(shù)、循環(huán)和所有的復(fù)合語句。
以下是示例:
在Python中使用縮進(jìn)定義代碼塊
JavaScript如何定義代碼塊
在JavaScript中,我們使用花括號(hào)({})將屬于同一代碼塊的語句分組。
以下是示例:
使用花括號(hào)在JavaScript中定義代碼塊
Python和JavaScript中的變量定義
賦值語句是任何編程語言中最基本的語句之一。讓我們看看如何在Python和JavaScript中定義一個(gè)變量并對其賦值。
如何在Python中定義變量
要在Python中定義變量,我們要寫出變量名,后跟等號(hào)(=)和將分配給該變量的值。
<variable_name> = <value>
例如:
x = 5
如何在JavaScript中定義變量
語法在JavaScript中非常相似,但是我們只需要var在變量名稱之前添加關(guān)鍵字,并以分號(hào)(;)結(jié)尾即可。
var <variable_name> = <value>;
提示:當(dāng)使用var定義變量時(shí),該變量具有函數(shù)作用域。
var x = 5;
我們還可以使用關(guān)鍵字let:
let <variable_name> = <value>;
例如:
let x = 5;
提示:當(dāng)使用let定義變量時(shí),變量將具有塊級(jí)作用域。它將僅在定義它的代碼塊中被識(shí)別。
Python和JavaScript中的變量命名約定
Python和JavaScript遵循兩種不同的變量命名約定。
如何在Python中命名變量
Python推薦使用蛇形命名法(snake_case)。
根據(jù)Python樣式指南:
- 變量名遵循與函數(shù)名相同的約定。
- 函數(shù)名稱應(yīng)小寫,必要時(shí)用下劃線分隔單詞以提高可讀性。
因此,Python中的典型變量名稱如下所示:
first_name
如何在JavaScript中命名變量
不過在JavaScript中,我們應(yīng)該遵循小駱駝命名法(lowerCamelCase)為命名樣式,暨以首字母小寫,之后每個(gè)新單詞以大寫字母開頭。
根據(jù)MDN Web文檔的JavaScript準(zhǔn)則文章:
對于變量名,請使用lowerCamelCasing,并在適當(dāng)?shù)牡胤绞褂煤啙嵉?,易于理解的語義名稱。
因此,JavaScript中的典型變量名稱應(yīng)如下所示:
firstName
Python和JavaScript中的常量
下面讓我們來討論一下常量。常量是在程序執(zhí)行期間不能更改的值。
如何在Python中定義常量
在Python中,我們依靠命名規(guī)則來定義常量,因?yàn)檎Z言中沒有嚴(yán)格的規(guī)則來防止更改它們的值。
根據(jù)Python樣式指南:
常量通常在模塊級(jí)別定義,并以所有大寫字母書寫,并用下劃線分隔單詞。
這是我們用于在Python中定義常量的命名方式:
CONSTANT_NAME
例如:
TAX_RATE_PERCENTAGE = 32
這樣的命名規(guī)則只是從規(guī)則上為自己和其他開發(fā)人員做了約定,該值不應(yīng)在程序中進(jìn)行修改,但從技術(shù)上講,該值是可以被更改的。
如何在JavaScript中定義常量
在JavaScript中,我們可以定義不能在程序中更改的常量,并且不能重新分配變量標(biāo)識(shí)符。
但這并不意味著值本身不能更改。
根據(jù)這篇文章const的MDN的Web文檔:
const聲明創(chuàng)建了一個(gè)對值的只讀引用,這并不意味著它所擁有的值是不可改變的–只是變量標(biāo)識(shí)符不能重新分配。例如,在內(nèi)容是對象的情況下,這意味著對象的內(nèi)容(例如,它的屬性)可以被改變。
要在JavaScript中定義常量,我們const 在變量名稱之前添加關(guān)鍵字:
const TAX_RATE_PERCENTAGE = 32;
如果嘗試更改常量的值,則會(huì)看到此錯(cuò)誤:
Python和JavaScript中的數(shù)據(jù)類型和值
數(shù)值數(shù)據(jù)類型
Python有三種數(shù)值類型,可以幫助我們出于科學(xué)目的執(zhí)行精確計(jì)算。這些數(shù)值類型包括:int (整數(shù))、 float (浮點(diǎn)數(shù))和complex。它們中的每一個(gè)都有自己的屬性、特征和應(yīng)用。
而JavaScript只有兩種數(shù)值類型:Number和BigInt。整數(shù)和浮點(diǎn)數(shù)都被認(rèn)為是Number類型。
None vs. null
在Python中,有一個(gè)名為None的特殊值,我們通常用它來指示變量在程序中的某個(gè)特定點(diǎn)沒有值。
JavaScript中的等效值為null,這表示不存在任何對象值。
undefined 值
在JavaScript中,我們有一個(gè)特殊值,當(dāng)我們聲明變量而不分配初始值時(shí)會(huì)自動(dòng)分配一個(gè)特殊值,它就是undefined。
以下是示例:
在Python中,你必須為變量分配一個(gè)初始值。沒有初始值就無法聲明它。你可以講None指定為Python變量的初始值,以表示缺少值。
Python和JavaScript中的基礎(chǔ)數(shù)據(jù)類型
基礎(chǔ)數(shù)據(jù)類型表示我們可以在編程語言中處理的最基本的值。讓我們比較一下這兩種語言的基礎(chǔ)數(shù)據(jù)類型:
- Python具有四種基礎(chǔ)數(shù)據(jù)類型:整數(shù)(int),浮點(diǎn)數(shù)(float),布爾值(bool)和字符串(str)。
- JavaScript具有六種原始數(shù)據(jù)類型:undefined,布爾值,字符串,數(shù)字BigInt和Symbol。
如何用Python和JavaScript編寫注釋
注釋對于編寫簡潔易讀的代碼非常重要。讓我們看看在Python和JavaScript中的注釋分別是什么樣的吧:
單行注釋
- 在Python中,我們使用井號(hào)(#)編寫注釋。該符號(hào)之后同一行上的所有字符均被視為注釋的一部分。
- 在JavaScript中,我們寫兩個(gè)斜杠(//)來開始單行注釋。
多行注釋
- 在Python中,要編寫多行注釋,我們要對每一行程序前都加上#號(hào),以標(biāo)識(shí)這行為注釋。
- 在JavaScript中,多行注釋以/*開頭,以*/結(jié)束。這些符號(hào)之間的所有字符都被視為注釋的一部分。
Python和JavaScript中的內(nèi)置數(shù)據(jù)結(jié)構(gòu)
Tuples
-
在Python中,我們有一個(gè)內(nèi)置的數(shù)據(jù)結(jié)構(gòu),叫做元組,它和列表非常相似,但是不可更改。因此,它在程序執(zhí)行過程中不能被改變,所以它被用來存儲(chǔ)那些不應(yīng)該被修改的數(shù)據(jù)。
-
在JavaScript中,并沒有一個(gè)內(nèi)置的具有這些特性的數(shù)據(jù)結(jié)構(gòu)。雖然你可以通過語言的某些特性來實(shí)現(xiàn)類似的數(shù)據(jù)結(jié)構(gòu)。
列表List與數(shù)組Array
- 在Python中, List用于在同一數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)一系列值??梢栽诔绦蛑袑ζ溥M(jìn)行修改,索引和使用。
- 在JavaScript中,可實(shí)現(xiàn)類似功能的數(shù)據(jù)結(jié)構(gòu)稱為Array。
哈希表
- 在Python中,有一個(gè)稱為字典的內(nèi)置數(shù)據(jù)結(jié)構(gòu),可幫助我們將某些值映射到其他值并創(chuàng)建鍵值對??捎米鞴1硎褂谩?/li>
- JavaScript沒有這種類型的內(nèi)置數(shù)據(jù)結(jié)構(gòu),但是有某些方法可以使用語言的某些元素來重現(xiàn)其功能。
Python和JavaScript中的運(yùn)算符
取整除
盡管大多數(shù)算術(shù)運(yùn)算符在Python和JavaScript間的工作原理和使用方式完全相同,但在進(jìn)行整除時(shí)卻略有不同。
- 在Python中,用雙斜杠(//)進(jìn)行整除運(yùn)算。
- 在JavaScript中,沒有特定的取整除的運(yùn)算符。但我們可以通過調(diào)用Math.floor()方法將結(jié)果四舍五入為最接近的整數(shù)。
比較值和類型
在Python中,我們使用==運(yùn)算符比較兩個(gè)值及其數(shù)據(jù)類型是否相等。
# Comparing Two Integers >>> 0 == 0 True # Comparing Integer to String >>> 0 == "0" False
在JavaScript中,的==運(yùn)算符,它的執(zhí)行工作原理是在比較之前將兩個(gè)對象轉(zhuǎn)換為相同的類型。
如果我們使用JavaScript(0 == "0")檢查上一個(gè)示例的“整數(shù)與字符串”比較的結(jié)果,則結(jié)果是True而不是False,因?yàn)樵诒容^之前將值轉(zhuǎn)換為相同的數(shù)據(jù)類型:
在JavaScript中,要檢查值和數(shù)據(jù)類型是否相等,我們需要使用另外一個(gè)運(yùn)算符===(三等號(hào))。
邏輯運(yùn)算符
- 在Python中,有:and,or,和not這三個(gè)邏輯運(yùn)算符。
- 在JavaScript中,則是:&&,|| 和 ! 。
類型運(yùn)算符
- 在Python中,要檢查對象的類型,可以使用type()函數(shù)。
- 在JavaScript中,我們使用typeof運(yùn)算符。
Python和JavaScript的輸入和輸出
要求用戶輸入和向用戶顯示值在應(yīng)用中是非常常見的操作。讓我們看看在Python和JavaScript中分別是如何表示的。
輸入
- 在Python中,我們使用該input()函數(shù)來請求用戶輸入。我們將消息寫在括號(hào)內(nèi)。
- 在JavaScript中,如果是正在瀏覽器上運(yùn)行代碼可使用prompt作為輸入方案(就是這樣不是常用方案罷了),window.prompt(message) 在輸入完成后,將結(jié)果分配給變量。
兩種方法之間的主要區(qū)別在于,在Python中,將提示用戶在控制臺(tái)中輸入值,而在JavaScript中,瀏覽器中將顯示一個(gè)小提示,并要求用戶輸入值。
在JavaScript中,如果您打開Chrome Developer工具并在控制臺(tái)中輸入以下代碼:
將顯示如下圖提示
輸出
- 在Python中,我們使用print()函數(shù)將值打印到控制臺(tái)。
- 在JavaScript中,我們使用console.log()向控制臺(tái)打印一個(gè)值。
Python和JavaScript中的條件語句
通過條件語句,我們可以根據(jù)特定條件來選擇程序后續(xù)將要執(zhí)行的部分。
if 語句
- 在Python中,我們依靠縮進(jìn)來指示哪些代碼行屬于條件代碼。
- 在JavaScript中,必須用括號(hào)將條件括起來,用花括號(hào)將代碼括起來。該代碼也應(yīng)縮進(jìn)。
if/else 語句
else子句在兩種語言中都非常相似。唯一的區(qū)別是:
- 在Python中, 我們在else關(guān)鍵字之后寫一個(gè)冒號(hào)(:)
- 在JavaScript中, 我們用大括號(hào)({})將屬于該子句的代碼括起來。
多條件語句
- 在Python中,我們在條件后面寫關(guān)鍵字elif。在條件之后,我們寫一個(gè)冒號(hào)(:),代碼縮進(jìn)下一行。
- 在JavaScript中,我們編寫關(guān)鍵字Else if,后跟條件(用圓括號(hào)括起來)。條件結(jié)束后,我們編寫花括號(hào),并在花括號(hào)中縮進(jìn)代碼。
Switch 語句
- 在JavaScript中,我們有一個(gè)額外的控制語句,可以用來根據(jù)表達(dá)式的值選擇要執(zhí)行的操作。此語句稱為switch。
- Python沒有這種類型的語句。
Python和JavaScript中的For循環(huán)和While循環(huán)
下面讓我們看看如何在Python和JavaScript中定義不同類型的循環(huán)以及它們的主要區(qū)別。
循環(huán)
在Python中定義for循環(huán)的語法比JavaScript中的語法相對簡單。
-
在Python中,我們在關(guān)鍵字 for 后面寫循環(huán)變量的名稱,關(guān)鍵字 in,及調(diào)用 range() 函數(shù),指定必要的參數(shù)。然后,我們寫一個(gè)冒號(hào)(:),后面是縮進(jìn)的循環(huán)主體。
-
在JavaScript中,我們必須明確地指定幾個(gè)值。我們用for關(guān)鍵字開始,后面是括號(hào)。在這些括號(hào)中,我們定義了循環(huán)變量的初始值,必須為False才能停止循環(huán)的條件,以及如何在每次迭代時(shí)更新變量。然后,我們寫大括號(hào)來創(chuàng)建一個(gè)代碼塊,在大括號(hào)內(nèi)我們寫出循環(huán)的主體縮進(jìn)。
遍歷可迭代對象
我們可以在Python和JavaScript中使用for循環(huán)來迭代可迭代的元素。
-
在 Python 中,我們在關(guān)鍵字 for 后面寫上循環(huán)變量、in 關(guān)鍵字和迭代符。然后,我們寫一個(gè)冒號(hào)(:)和循環(huán)的主體(縮進(jìn))。
-
在JavaScript中,我們可以使用一個(gè)for … 的循環(huán)。我們在for關(guān)鍵字后面寫上小括號(hào),在小括號(hào)內(nèi)寫上關(guān)鍵字var,后面寫上循環(huán)變量、關(guān)鍵字of和可迭代。我們用大括號(hào)包圍循環(huán)的主體,然后縮進(jìn)。
While循環(huán)
-
在Python中,我們在關(guān)鍵字while后面寫上條件、冒號(hào)(:),然后在新的一行中寫上循環(huán)的主體(縮進(jìn))。
-
在JavaScript中,語法非常相似。不同的是,我們必須用括號(hào)包圍條件,用大括號(hào)將循環(huán)體括起來。
do..while 循環(huán)
在JavaScript中,還有一種Python不存在的循環(huán)類型。
這種類型的循環(huán)稱為do..while循環(huán),因?yàn)樗辽賵?zhí)行一次操作,并在條件為時(shí)繼續(xù)運(yùn)行True。
do { // Code } while (condition);
Python和JavaScript中的函數(shù)
函數(shù)對于寫出簡潔、可維護(hù)和可讀的程序非常重要。Python和JavaScript中的語法非常相似,但讓我們分析一下它們的主要區(qū)別:
-
在 Python 中,我們在關(guān)鍵字 def 后面寫上函數(shù)的名稱,并在括號(hào)中寫上參數(shù)列表。在這個(gè)列表之后,我們寫一個(gè)冒號(hào)(:)和函數(shù)的主體(縮進(jìn))。
-
在JavaScript中,唯一不同的是,我們使用function關(guān)鍵字定義函數(shù),并在函數(shù)的主體周圍加上大括號(hào)。
函數(shù)參數(shù)的數(shù)量
-
在 Python 中,傳遞給函數(shù)調(diào)用的參數(shù)數(shù)必須與函數(shù)定義中定義的參數(shù)數(shù)相匹配。如果不是這樣,就會(huì)發(fā)生異常。
-
在JavaScript中,這不是必需的,因?yàn)閰?shù)是可選的。您可以使用比函數(shù)定義中定義的參數(shù)更少或