Python和JavaScript在使用上有什麼區別?

轉載請註明出處:葡萄城官網,葡萄城爲開發者提供專業的開發工具、解決方案和服務,賦能開發者。javascript

原文出處:https://www.freecodecamp.org/news/python-vs-javascript-what-are-the-key-differences-between-the-two-popular-programming-languages/前端

JavaScript和Python這兩種語言很是流行和強大,但它們在部分語法的使用上卻有着一些不一樣,若是你剛好對這些區別對比感興趣,那麼這篇文章中的內容可能會爲你提供一些幫助。java

在本文中,你將瞭解到: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定義變量時,變量將具備塊級做用域。它將僅在定義它的代碼塊中被識別。  

 

 

 

PythonJavaScript中的變量命名約定

PythonJavaScript遵循兩種不一樣的變量命名約定。

如何在Python中命名變量

Python推薦使用蛇形命名法(snake_case

根據Python樣式指南

ž   變量名遵循與函數名相同的約定。

ž   函數名稱應小寫,必要時用下劃線分隔單詞以提升可讀性。

 

所以,Python中的典型變量名稱以下所示:

first_name 

如何在JavaScript中命名變量

不過在JavaScript中,咱們應該遵循小駱駝命名法(lowerCamelCase)爲命名樣式,暨以首字母小寫,以後每一個新單詞以大寫字母開頭。

根據MDN Web文檔的JavaScript準則文章:

對於變量名,請使用lowerCamelCasing,並在適當的地方使用簡潔的,易於理解的語義名稱。

所以,JavaScript中的典型變量名稱應以下所示:  

firstName

 

 

PythonJavaScript中的常量

下面讓咱們來討論一下常量。常量是在程序執行期間不能更改的值。

如何在Python中定義常量

Python中,咱們依靠命名規則來定義常量,由於語言中沒有嚴格的規則來防止更改它們的值。

根據Python樣式指南

常量一般在模塊級別定義,並以全部大寫字母書寫,用下劃線分隔單詞

這是咱們用於在Python中定義常量的命名方式:

CONSTANT_NAME

例如:

 

TAX_RATE_PERCENTAGE = 32 

這樣的命名規則只是從規則上爲本身和其餘開發人員作了約定,該值不該在程序中進行修改,但從技術上講,該值是能夠被更改的。  

如何在JavaScript中定義常量

JavaScript中,咱們能夠定義不能在程序中更改的常量,而且不能從新分配變量標識符。

但這並不意味着值自己不能更改。

根據這篇文章constMDNWeb文檔

const聲明建立了一個對值的只讀引用,這並不意味着它所擁有的值是不可改變的--只是變量標識符不能從新分配。例如,在內容是對象的狀況下,這意味着對象的內容(例如,它的屬性)能夠被改變。

要在JavaScript中定義常量,咱們const 在變量名稱以前添加關鍵字:

const TAX_RATE_PERCENTAGE = 32;

若是嘗試更改常量的值,則會看到此錯誤: 

 

 

 

 

PythonJavaScript中的數據類型和值

數值數據類型

Python有三種數值類型,能夠幫助咱們出於科學目的執行精確計算。這些數值類型包括:int (整數) float(浮點數)complex。它們中的每個都有本身的屬性、特徵和應用。

JavaScript只有兩種數值類型:NumberBigInt。整數和浮點數都被認爲是Number類型。

None vs. null

Python中,有一個名爲None的特殊值,咱們一般用它來指示變量在程序中的某個特定點沒有值。

JavaScript中的等效值爲null,這表示不存在任何對象值。

 

 

undefined 

JavaScript,咱們有一個特殊值,當咱們聲明變量而不分配初始值時會自動分配一個特殊值,它就是undefined

如下是示例:

 

 Python,你必須爲變量分配一個初始值。沒有初始值就沒法聲明它。你能夠講None指定爲Python變量的初始值,以表示缺乏值。

PythonJavaScript中的基礎數據類型

基礎數據類型表示咱們能夠在編程語言中處理的最基本的值。讓咱們比較一下這兩種語言的基礎數據類型:

  • Python具備四種基礎數據類型:整數(int),浮點數(float),布爾值(bool)和字符串(str)。
  • JavaScript具備六種原始數據類型:undefined布爾值,字符串,數字BigIntSymbol

如何用PythonJavaScript編寫註釋

註釋對於編寫簡潔易讀的代碼很是重要。讓咱們看看在PythonJavaScript中的註釋分別是什麼樣的吧:

單行註釋

  • Python,咱們使用井號(#)編寫註釋。該符號以後同一行上的全部字符均被視爲註釋的一部分。
  • JavaScript,咱們寫兩個斜槓(//)來開始單行註釋。

 

 

多行註釋

  • Python,要編寫多行註釋,咱們要對每一行程序前都加上#號,以標識這行爲註釋。
  • JavaScript,多行註釋以/*開頭,以*/結束。這些符號之間的全部字符都被視爲註釋的一部分。

 

PythonJavaScript中的內置數據結構

Tuples

  • Python中,咱們有一個內置的數據結構,叫作元組,它和列表很是類似,可是不可更改。所以,它在程序執行過程當中不能被改變,因此它被用來存儲那些不該該被修改的數據。
  • JavaScript中,並無一個內置的具備這些特性的數據結構。雖然你能夠經過語言的某些特性來實現相似的數據結構。

 

 

 

列表List與數組Array

  • Python中, List用於在同一數據結構中存儲一系列值。能夠在程序中對其進行修改,索引和使用。
  • JavaScript,可實現相似功能的數據結構稱爲Array

 

 

哈希表

  • Python,有一個稱爲字典的內置數據結構,可幫助咱們將某些值映射到其餘值並建立鍵值對。可用做哈希表使用。
  • JavaScript沒有這種類型的內置數據結構,可是有某些方法可使用語言的某些元素來重現其功能。

 

 

取整除

儘管大多數算術運算符在PythonJavaScript間的工做原理和使用方式徹底相同,但在進行整除時卻略有不一樣。

  • Python,用雙斜槓(//)進行整除運算。
  • JavaScript,沒有特定的取整除的運算符。但咱們能夠經過調用Math.floor()方法將結果四捨五入爲最接近的整數。

 

 

比較值和類型

Python,咱們使用==運算符比較兩個值及其數據類型是否相等。

# Comparing Two Integers
>>> 0 == 0     
True
# Comparing Integer to String
>>> 0 == "0"
False 

JavaScript,的==運算符,它的執行工做原理是在比較以前將兩個對象轉換爲相同的類型。

若是咱們使用JavaScript0 == "0")檢查上一個示例的整數與字符串比較的結果,則結果是True不是False由於在比較以前將值轉換爲相同的數據類型:  

 

 JavaScript中,要檢查值數據類型是否相等,咱們須要使用另一個運算符===(三等號)。

 

 

 

邏輯運算符

  • Python,有:andor,和not這三個邏輯運算符。
  • JavaScript,則是:&&|| ! 

 

 

類型運算符

  • Python,要檢查對象的類型,可使用type()函數。
  • JavaScript,咱們使用typeof運算符。

 

 

PythonJavaScript的輸入和輸出

要求用戶輸入和向用戶顯示值在應用中是很是常見的操做。讓咱們看看在PythonJavaScript中分別是如何表示的。

輸入

  • Python,咱們使用該input()函數來請求用戶輸入。咱們將消息寫在括號內。
  • JavaScript,若是是正在瀏覽器上運行代碼可以使用prompt做爲輸入方案(就是這樣不是經常使用方案罷了), window.prompt(message) 在輸入完成後,將結果分配給變量。

兩種方法之間的主要區別在於,在Python中,將提示用戶在控制檯中輸入值,而在JavaScript中,瀏覽器中將顯示一個小提示,並要求用戶輸入值。

 

 

 

 JavaScript中,若是您打開Chrome Developer工具並在控制檯中輸入如下代碼:

 

 

將顯示以下圖提示 

 

 

輸出

  • Python,咱們使用print()函數將值打印到控制檯。
  • JavaScript,咱們使用console.log()向控制檯打印一個值。

 

 

PythonJavaScript中的條件語句

經過條件語句,咱們能夠根據特定條件來選擇程序後續將要執行的部分。

if 語句

  • Python,咱們依靠縮進來指示哪些代碼行屬於條件代碼。
  • JavaScript,必須用括號將條件括起來,用花括號將代碼括起來。該代碼也應縮進。

 

 

if/else 語句

else子句在兩種語言中都很是類似。惟一的區別是:

  • Python 咱們在else關鍵字以後寫一個冒號(:
  • JavaScript 咱們用大括號({})將屬於該子句的代碼括起來。

 

 

多條件語句

  • Python中,咱們在條件後面寫關鍵字elif。在條件以後,咱們寫一個冒號(:),代碼縮進下一行。
  • JavaScript中,咱們編寫關鍵字Else if,後跟條件(用圓括號括起來)。條件結束後,咱們編寫花括號,並在花括號中縮進代碼。

 

Switch 語句

  • JavaScript中,咱們有一個額外的控制語句,能夠用來根據表達式的值選擇要執行的操做。此語句稱爲switch
  • Python沒有這種類型的語句。

 

 

 

PythonJavaScript中的For循環和While循環

下面讓咱們看看如何在PythonJavaScript中定義不一樣類型的循環以及它們的主要區別。

循環

Python中定義for循環的語法比JavaScript中的語法相對簡單。

  • Python,咱們在關鍵字 for 後面寫循環變量的名稱,關鍵字 in,及調用 range() 函數,指定必要的參數。而後,咱們寫一個冒號(:),後面是縮進的循環主體。
  • JavaScript中,咱們必須明確地指定幾個值。咱們用for關鍵字開始,後面是括號。在這些括號中,咱們定義了循環變量的初始值,必須爲False才能中止循環的條件,以及如何在每次迭代時更新變量。而後,咱們寫大括號來建立一個代碼塊,在大括號內咱們寫出循環的主體縮進。

 

 

遍歷可迭代對象

咱們能夠在PythonJavaScript中使用for循環來迭代可迭代的元素。

  • Python 中,咱們在關鍵字 for 後面寫上循環變量、in 關鍵字和迭代符。而後,咱們寫一個冒號(:)和循環的主體(縮進)。
  • JavaScript中,咱們可使用一個for ... 的循環。咱們在for關鍵字後面寫上小括號,在小括號內寫上關鍵字var,後面寫上循環變量、關鍵字of和可迭代。咱們用大括號包圍循環的主體,而後縮進。

 

 

While循環

  • Python中,咱們在關鍵字while後面寫上條件、冒號(:),而後在新的一行中寫上循環的主體(縮進)
  • JavaScript中,語法很是類似。不一樣的是,咱們必須用括號包圍條件,用大括號將循環體括起來。

 

 

do..while 循環

JavaScript,還有一種Python不存在的循環類型。

這種類型的循環稱爲do..while循環,由於它至少執行一次操做,並在條件爲時繼續運行True

do {
    // Code
} while (condition); 

PythonJavaScript中的函數

函數對於寫出簡潔、可維護和可讀的程序很是重要。PythonJavaScript中的語法很是類似,但讓咱們分析一下它們的主要區別:

  • Python 中,咱們在關鍵字 def 後面寫上函數的名稱,並在括號中寫上參數列表。在這個列表以後,咱們寫一個冒號(:)和函數的主體(縮進)。
  • JavaScript中,惟一不一樣的是,咱們使用function關鍵字定義函數,並在函數的主體周圍加上大括號。

 

函數參數的數量

  • Python 中,傳遞給函數調用的參數數必須與函數定義中定義的參數數相匹配。若是不是這樣,就會發生異常。
  • JavaScript中,這不是必需的,由於參數是可選的。您可使用比函數定義中定義的參數更少或更多的參數來調用函數。缺省的參數被賦予未定義的值,額外的參數能夠經過Arguments對象訪問。

 

 

 

PythonJavaScript進行面向對象的編程

PythonJavaScript都支持面向對象編程,因此讓咱們看看如何建立和使用這種編程範例的主要元素。

Class

類定義的第一行在PythonJavaScript中很是類似。咱們在關鍵字class後跟類的名稱。

惟一的區別是:

  • Python,在類名以後,咱們寫了一個冒號(:
  • JavaScript,咱們用大括號({})括住類的內容

 

構造函數和屬性

構造函數是一種特殊的方法,當建立類的新實例(新對象)時會調用該方法。它的主要目的是初始化實例的屬性。

  • Python,調用了初始化新實例的構造函數init (帶有兩個前導和尾隨下劃線)。建立類的實例以初始化其屬性時,將自動調用此方法。其參數列表定義了建立實例必須傳遞的值。該列表以self第一個參數開頭。
  • JavaScript,構造函數方法被調用,constructor而且它還具備一個參數列表。

 

 

 

PythonJavaScript中的方法

  • Python,咱們使用def關鍵字,其名稱和括號內的參數列表定義方法。此參數列表以參數開頭,self以引用正在調用該方法的實例。在此列表以後,咱們編寫一個冒號(:),並將該方法的主體縮進。
  • JavaScript,方法是經過編寫其名稱,後跟參數列表和花括號來定義的。在花括號內,咱們編寫方法的主體。

實例

要建立類的實例:

  • Python,咱們編寫類的名稱,並在括號內傳遞參數。
my_circle = Circle(5, "Red")
  • JavaScript,咱們須要new在類名以前添加關鍵字。
my_circle = new Circle(5, "Red");

  

總結

PythonJavaScript都是很是強大的語言,由於有着不一樣的實際應用場景,Python能夠用於Web開發和普遍的應用,包括科學用途。JavaScript主要用於Web開發(前端和後端)和移動應用開發。因此,兩種語言並無孰強孰弱的區別。

雖然它們在語法和使用上有些許區別,但自己做爲一門開發語言,使用和掌握上沒有本質上的區別,若是有那也只是使用者自身的熟練程度帶來的影響罷了。

但願這篇文章能爲你帶來一些幫助。若是有疑問能夠經過評論告訴我。

相關文章
相關標籤/搜索