轉載請註明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。
原文出處:https://www.freecodecamp.org/news/python-vs-javascript-what-are-the-key-differences-between-the-two-popular-programming-languages/
JavaScript和Python這兩種語言非常流行和強大,但它們在部分語法的使用上卻有著一些不同,如果你恰好對這些區別對比感興趣,那麼這篇文章中的內容可能會為你提供一些幫助。
在本文中,你將瞭解到:
- Python和JavaScript的不同實際應用程式。
- Python和JavaScript之間的主要語法和功能差異。
Python VS JavaScript:應用上的差異
Python
由於它的強大和通用性,Python已成為全世界幾乎所有科學應用中的重要工具。它是一種通用程式語言,支援不同的程式設計正規化。
它被廣泛應用於科學和專業應用,包括資料科學、人工智慧、機器學習、電腦科學教育、計算機視覺和影像處理、醫學、生物學,甚至天文學。
另外,Python還被用於Web開發,雖然它主要用於後端開發,例如應用程式的伺服器端。
JavaScript
Python可用於開發Web應用程式的後端部分,但JavaScript可用於開發Web應用程式的後端和前端。
前端是使用者看到並與之互動的應用程式的一部分。每當您看到網站或Web應用程式或與之互動時,這部分功能就是JavaScript在 “幕後”提供的。
同樣,當你與移動應用進行互動時,您可能會使用JavaScript,因為像React Native這樣的框架可以讓我們使用JavaScript編寫可適應不同平臺的應用程式。
JavaScript在Web開發中得到了如此廣泛的應用,因為它是一種多功能語言,為我們提供了開發Web應用程式元件所需的工具。
Python和JavaScript應用程式之間的差異
簡單來講,從應用程式角度來看,開發人員將Python用於開發科學應用程式,同時使用JavaScript進行Web開發及面向使用者的功能和伺服器開發。
Python VS JavaScript: 語法差異
既然知道了它們在應用層面上用途的區別,那我們就來看看它們的寫法和語法上有什麼差異,下面我們將通過以下主要元素上的差異。
- 程式碼塊
- 變數定義
- 變數命名協議
- 常量
- 資料型別和值
- 註釋
- 內建的資料結構
- 運算子
- 輸入/輸出
- 條件語句
- For迴圈和While迴圈
- 函式
- 物件導向的程式設計
Python和JavaScript中的程式碼塊
每種程式語言都有自己的樣式來定義程式碼塊。讓我們來看看它們在Python和JavaScript中的區別:
Python如何定義程式碼塊
Python依靠縮排來定義程式碼塊。當一系列連續的程式碼行在同一級別縮排時,它們被視為同一程式碼塊的一部分。
我們使用它來定義Python中的條件、函式、迴圈和所有的複合語句。
以下是示例:
在Python中使用縮排定義程式碼塊
JavaScript如何定義程式碼塊
在JavaScript中,我們使用花括號({})將屬於同一程式碼塊的語句分組。
以下是示例:
使用花括號在JavaScript中定義程式碼塊
Python和JavaScript中的變數定義
賦值語句是任何程式語言中最基本的語句之一。讓我們看看如何在Python和JavaScript中定義一個變數並對其賦值。
如何在Python中定義變數
要在Python中定義變數,我們要寫出變數名,後跟等號(=)和將分配給該變數的值。
<variable_name> = <value>
例如
x = 5
如何在JavaScript中定義變數
語法在JavaScript中非常相似,但是我們只需要var在變數名稱之前新增關鍵字,並以分號(;)結尾即可。
var <variable_name> = <value>;
當使用var定義變數時,該變數具有函式作用域。
var x = 5;
我們還可以使用關鍵字let:
let <variable_name> = <value>;
例如:
let x = 5;
當使用let定義變數時,變數將具有塊級作用域。它將僅在定義它的程式碼塊中被識別。
Python和JavaScript中的變數命名約定
Python和JavaScript遵循兩種不同的變數命名約定。
如何在Python中命名變數
Python推薦使用蛇形命名法(snake_case)。
根據Python樣式指南:
變數名遵循與函式名相同的約定。
函式名稱應小寫,必要時用下劃線分隔單詞以提高可讀性。
因此,Python中的典型變數名稱如下所示:
first_name
如何在JavaScript中命名變數
不過在JavaScript中,我們應該遵循小駱駝命名法(lowerCamelCase)為命名樣式,暨以首字母小寫,之後每個新單詞以大寫字母開頭。
根據MDN Web文件的JavaScript準則文章:
對於變數名,請使用lowerCamelCasing,並在適當的地方使用簡潔的,易於理解的語義名稱。
因此,JavaScript中的典型變數名稱應如下所示:
firstName
Python和JavaScript中的常量
下面讓我們來討論一下常量。常量是在程式執行期間不能更改的值。
如何在Python中定義常量
在Python中,我們依靠命名規則來定義常量,因為語言中沒有嚴格的規則來防止更改它們的值。
根據Python樣式指南:
常量通常在模組級別定義,並以所有大寫字母書寫,並用下劃線分隔單詞。
這是我們用於在Python中定義常量的命名方式:
CONSTANT_NAME
例如:
TAX_RATE_PERCENTAGE = 32
這樣的命名規則只是從規則上為自己和其他開發人員做了約定,該值不應在程式中進行修改,但從技術上講,該值是可以被更改的。
如何在JavaScript中定義常量
在JavaScript中,我們可以定義不能在程式中更改的常量,並且不能重新分配變數識別符號。
但這並不意味著值本身不能更改。
根據這篇文章const的MDN的Web文件:
const宣告建立了一個對值的只讀引用,這並不意味著它所擁有的值是不可改變的--只是變數識別符號不能重新分配。例如,在內容是物件的情況下,這意味著物件的內容(例如,它的屬性)可以被改變。
要在JavaScript中定義常量,我們const 在變數名稱之前新增關鍵字:
const TAX_RATE_PERCENTAGE = 32;
如果嘗試更改常量的值,則會看到此錯誤:
Python和JavaScript中的資料型別和值
數值資料型別
Python有三種數值型別,可以幫助我們出於科學目的執行精確計算。這些數值型別包括:int (整數)、 float(浮點數)和complex。它們中的每一個都有自己的屬性、特徵和應用。
而JavaScript只有兩種數值型別:Number和BigInt。整數和浮點數都被認為是Number型別。
None vs. null
在Python中,有一個名為None的特殊值,我們通常用它來指示變數在程式中的某個特定點沒有值。
JavaScript中的等效值為null,這表示不存在任何物件值。
undefined
值
在JavaScript中,我們有一個特殊值,當我們宣告變數而不分配初始值時會自動分配一個特殊值,它就是undefined。
以下是示例:
在Python中,你必須為變數分配一個初始值。沒有初始值就無法宣告它。你可以講None指定為Python變數的初始值,以表示缺少值。
Python和JavaScript中的基礎資料型別
基礎資料型別表示我們可以在程式語言中處理的最基本的值。讓我們比較一下這兩種語言的基礎資料型別:
- Python具有四種基礎資料型別:整數(int),浮點數(float),布林值(bool)和字串(str)。
- JavaScript具有六種原始資料型別:undefined,布林值,字串,數字BigInt和Symbol。
如何用Python和JavaScript編寫註釋
註釋對於編寫簡潔易讀的程式碼非常重要。讓我們看看在Python和JavaScript中的註釋分別是什麼樣的吧:
單行註釋
- 在Python中,我們使用井號(#)編寫註釋。該符號之後同一行上的所有字元均被視為註釋的一部分。
- 在JavaScript中,我們寫兩個斜槓(//)來開始單行註釋。
多行註釋
- 在Python中,要編寫多行註釋,我們要對每一行程式前都加上#號,以標識這行為註釋。
- 在JavaScript中,多行註釋以/*開頭,以*/結束。這些符號之間的所有字元都被視為註釋的一部分。
Python和JavaScript中的內建資料結構
Tuples
- 在Python中,我們有一個內建的資料結構,叫做元組,它和列表非常相似,但是不可更改。因此,它在程式執行過程中不能被改變,所以它被用來儲存那些不應該被修改的資料。
- 在JavaScript中,並沒有一個內建的具有這些特性的資料結構。雖然你可以通過語言的某些特性來實現類似的資料結構。
列表List與陣列Array
- 在Python中, List用於在同一資料結構中儲存一系列值。可以在程式中對其進行修改,索引和使用。
- 在JavaScript中,可實現類似功能的資料結構稱為Array。
雜湊表
- 在Python中,有一個稱為字典的內建資料結構,可幫助我們將某些值對映到其他值並建立鍵值對。可用作雜湊表使用。
- JavaScript沒有這種型別的內建資料結構,但是有某些方法可以使用語言的某些元素來重現其功能。
取整除
儘管大多數算術運算子在Python和JavaScript間的工作原理和使用方式完全相同,但在進行整除時卻略有不同。
- 在Python中,用雙斜槓(//)進行整除運算。
- 在JavaScript中,沒有特定的取整除的運算子。但我們可以通過呼叫Math.floor()方法將結果四捨五入為最接近的整數。
比較值和型別
在Python中,我們使用==運算子比較兩個值及其資料型別是否相等。
# Comparing Two Integers
>>> 0 == 0
True
# Comparing Integer to String
>>> 0 == "0"
False
在JavaScript中,的==運算子,它的執行工作原理是在比較之前將兩個物件轉換為相同的型別。
如果我們使用JavaScript(0 == "0"
)檢查上一個示例的“整數與字串”比較的結果,則結果是True而不是False,因為在比較之前將值轉換為相同的資料型別:
在JavaScript中,要檢查值和資料型別是否相等,我們需要使用另外一個運算子===(三等號)。
邏輯運算子
- 在Python中,有:and,or,和not這三個邏輯運算子。
- 在JavaScript中,則是:&&,|| 和! 。
型別運算子
- 在Python中,要檢查物件的型別,可以使用type()函式。
- 在JavaScript中,我們使用typeof運算子。
Python和JavaScript的輸入和輸出
要求使用者輸入和向使用者顯示值在應用中是非常常見的操作。讓我們看看在Python和JavaScript中分別是如何表示的。
輸入
- 在Python中,我們使用該input()函式來請求使用者輸入。我們將訊息寫在括號內。
- 在JavaScript中,如果是正在瀏覽器上執行程式碼可使用prompt作為輸入方案(就是這樣不是常用方案罷了), window.prompt(message) 在輸入完成後,將結果分配給變數。
兩種方法之間的主要區別在於,在Python中,將提示使用者在控制檯中輸入值,而在JavaScript中,瀏覽器中將顯示一個小提示,並要求使用者輸入值。
在JavaScript中,如果您開啟Chrome Developer工具並在控制檯中輸入以下程式碼:
將顯示如下圖提示
輸出
- 在Python中,我們使用print()函式將值列印到控制檯。
- 在JavaScript中,我們使用console.log()向控制檯列印一個值。
Python和JavaScript中的條件語句
通過條件語句,我們可以根據特定條件來選擇程式後續將要執行的部分。
if
語句
- 在Python中,我們依靠縮排來指示哪些程式碼行屬於條件程式碼。
- 在JavaScript中,必須用括號將條件括起來,用花括號將程式碼括起來。該程式碼也應縮排。
if/else
語句
else子句在兩種語言中都非常相似。唯一的區別是:
- 在Python中, 我們在else關鍵字之後寫一個冒號(:)
- 在JavaScript中, 我們用大括號({})將屬於該子句的程式碼括起來。
多條件語句
- 在Python中,我們在條件後面寫關鍵字elif。在條件之後,我們寫一個冒號(:),程式碼縮排下一行。
- 在JavaScript中,我們編寫關鍵字Else if,後跟條件(用圓括號括起來)。條件結束後,我們編寫花括號,並在花括號中縮排程式碼。
Switch 語句
- 在JavaScript中,我們有一個額外的控制語句,可以用來根據表示式的值選擇要執行的操作。此語句稱為switch。
- Python沒有這種型別的語句。
Python和JavaScript中的For迴圈和While迴圈
下面讓我們看看如何在Python和JavaScript中定義不同型別的迴圈以及它們的主要區別。
迴圈
在Python中定義for迴圈的語法比JavaScript中的語法相對簡單。
- 在Python中,我們在關鍵字 for 後面寫迴圈變數的名稱,關鍵字 in,及呼叫 range() 函式,指定必要的引數。然後,我們寫一個冒號(:),後面是縮排的迴圈主體。
- 在JavaScript中,我們必須明確地指定幾個值。我們用for關鍵字開始,後面是括號。在這些括號中,我們定義了迴圈變數的初始值,必須為False才能停止迴圈的條件,以及如何在每次迭代時更新變數。然後,我們寫大括號來建立一個程式碼塊,在大括號內我們寫出迴圈的主體縮排。
遍歷可迭代物件
我們可以在Python和JavaScript中使用for迴圈來迭代可迭代的元素。
- 在 Python 中,我們在關鍵字 for 後面寫上迴圈變數、in 關鍵字和迭代符。然後,我們寫一個冒號(:)和迴圈的主體(縮排)。
- 在JavaScript中,我們可以使用一個for ... 的迴圈。我們在for關鍵字後面寫上小括號,在小括號內寫上關鍵字var,後面寫上迴圈變數、關鍵字of和可迭代。我們用大括號包圍迴圈的主體,然後縮排。
While迴圈
- 在Python中,我們在關鍵字while後面寫上條件、冒號(:),然後在新的一行中寫上迴圈的主體(縮排)。
- 在JavaScript中,語法非常相似。不同的是,我們必須用括號包圍條件,用大括號將迴圈體括起來。
do..while
迴圈
在JavaScript中,還有一種Python不存在的迴圈型別。
這種型別的迴圈稱為do..while迴圈,因為它至少執行一次操作,並在條件為時繼續執行True
。
do {
// Code
} while (condition);
Python和JavaScript中的函式
函式對於寫出簡潔、可維護和可讀的程式非常重要。Python和JavaScript中的語法非常相似,但讓我們分析一下它們的主要區別:
- 在 Python 中,我們在關鍵字 def 後面寫上函式的名稱,並在括號中寫上引數列表。在這個列表之後,我們寫一個冒號(:)和函式的主體(縮排)。
- 在JavaScript中,唯一不同的是,我們使用function關鍵字定義函式,並在函式的主體周圍加上大括號。
函式引數的數量
- 在 Python 中,傳遞給函式呼叫的引數數必須與函式定義中定義的引數數相匹配。如果不是這樣,就會發生異常。
- 在JavaScript中,這不是必需的,因為引數是可選的。您可以使用比函式定義中定義的引數更少或更多的引數來呼叫函式。預設的引數被賦予未定義的值,額外的引數可以通過Arguments物件訪問。
Python和JavaScript進行物件導向的程式設計
Python和JavaScript都支援物件導向程式設計,所以讓我們看看如何建立和使用這種程式設計範例的主要元素。
Class
類定義的第一行在Python和JavaScript中非常相似。我們在關鍵字class後跟類的名稱。
唯一的區別是:
- 在Python中,在類名之後,我們寫了一個冒號(:)
- 在JavaScript中,我們用大括號({})括住類的內容
建構函式和屬性
建構函式是一種特殊的方法,當建立類的新例項(新物件)時會呼叫該方法。它的主要目的是初始化例項的屬性。
- 在Python中,呼叫了初始化新例項的建構函式init (帶有兩個前導和尾隨下劃線)。建立類的例項以初始化其屬性時,將自動呼叫此方法。其引數列表定義了建立例項必須傳遞的值。該列表以self第一個引數開頭。
- 在JavaScript中,建構函式方法被呼叫,constructor並且它還具有一個引數列表。
Python和JavaScript中的方法
- 在Python中,我們使用def關鍵字,其名稱和括號內的引數列表定義方法。此引數列表以引數開頭,self以引用正在呼叫該方法的例項。在此列表之後,我們編寫一個冒號(:),並將該方法的主體縮排。
- 在JavaScript中,方法是通過編寫其名稱,後跟引數列表和花括號來定義的。在花括號內,我們編寫方法的主體。
例項
要建立類的例項:
- 在Python中,我們編寫類的名稱,並在括號內傳遞引數。
my_circle = Circle(5, "Red")
- 在JavaScript中,我們需要new在類名之前新增關鍵字。
my_circle = new Circle(5, "Red");
總結
Python和JavaScript都是非常強大的語言,因為有著不同的實際應用場景,Python可以用於Web開發和廣泛的應用,包括科學用途。JavaScript主要用於Web開發(前端和後端)和移動應用開發。所以,兩種語言並沒有孰強孰弱的區別。
雖然它們在語法和使用上有些許區別,但本身作為一門開發語言,使用和掌握上沒有本質上的區別,如果有那也只是使用者自身的熟練程度帶來的影響罷了。
希望這篇文章能為你帶來一些幫助。如果有疑問可以通過評論告訴我。