一文讀懂 JavaScript 和 Python 九大語義區別

2021-02-23 IT服務圈兒

我是一名全棧開發。前幾天我一直在研究算法和數據結構,因為對於程式設計師而言,最重要能力的就是解決問題,所有任何程式設計師都應該擁有強大的解決問題的基礎能力。兩天前我開始學習Python,開始對這門語言有了更多的理解。我開始將其與JavaScript進行比較,因為JavaScript是我日常工作中使用的語言。JavaScript和Python是兩門非常重要的語言。儘管包括我在內的許多人都知道Python或JavaScript,但我們並不清楚兩種語言之間的重要區別。我注意到這兩門年語言有許多語義上的區別,相信理解這些區別對我和對其他人都有很大幫助。在本文中,我會比較我在兩門語言中遇到的一些基礎概念。所以,如果你熟悉JavaScript或Python,想了解二者的差異,那麼你就來對地方了!使用雙斜線(//)作為單行注釋,/* */ 作為多行注釋。使用 # 作為單行注釋,使用三引號""" """ 作為多行注釋。JavaScript中的每個代碼塊都必須放在花括號({})中,每條語句必須使用分號 ; 結束。

var a = 2;
if(a>0){
console.log("Positive");
}
else{
console.log("Negative");
}

Python中的代碼塊使用縮進表示。它不使用花括號或圓括號,而是使用空白。每條語句都需要換行。

a = 2
if a>0:
   print("Positive")
else:
   print("negative")
   print("does not belong to else block")

數據類型

我無法在本文中完整地討論JavaScript和Python之間的數據類型差異,這裡我們只討論主要的差異。

              

基本數據類型

上面的表格展示了JavaScript和Python的基本數據類型。JavaScript中的Number類型表示Int和float值,由編譯器在運行時確定。而JavaScript(ES10)中的BigInt用於存儲大整數,而Python使用Int表示所有尺寸的整數。JS使用null關鍵字表示空值,Python使用None。Python沒有undefined和symbol的概念,這些是JavaScript特有的。Python有一種特殊的數據類型——complex,用於表示複數 x + yj,其中x是實部,y是虛部。

a=3+4j
print(a.real) #3
print(a.imag) #4

             

非基本數據類型

上圖展示了複雜的(或者叫做非基本)數據類型。Python中的列表能存儲任何數據類型,與JavaScript一樣。但是Python中的數組可以使用庫(如NumPy,array)來定義。Python中的數組只能包含統一數據類型。Python中的列表和數組有很大區別。數組上可以執行多種數學操作,而列表不能。JavaScript中的對象類似於Python中的字典。兩者都包含鍵值對。但對象是JavaScript中的基本組成部分,而字典在Python中只不過是個數據容器。Python中的元組是一個不可修改的列表。用元組表示的列表無法被重新定義。而JavaScript沒有這個概念。因此,Python擁有內置的哈希表(字典),而JavaScript沒有內置的哈希表、方法或庫。在JavaScript中定義變量需要使用三種主要的關鍵字:var,let和const。定義方法決定了變量的使用方式(以及作用域)。Python中定義變量不需要使用關鍵字,只需要給變量名直接賦值即可:

If-Else

JavaScript中的條件語句是 if、else if、else還有switch。Python中的條件語句是if、elif和else。elif是else-if的縮寫。Python沒有switch語句。相反,可以用字典來代替。

三元運算符

JavaScript的三元運算符(?:)是一個條件運算符,語法為(condition)?(expresssionIfTrue):(expressionIfFalse):

var age = 26;
var beverage = (age >= 21) ? "Beer" : "Juice";
console.log(beverage); // "Beer"

Python中的三元運算符的語法是 (expressionIfTrue) if (condition) else (expressionIfFalse)

a, b = 10, 20
min = a if a < b else b
print(min)

全等運算符

全等運算符(===)也叫「嚴格相等運算符」,會比較兩個運算數並檢查其相等性,而不會進行類型轉換,也就是說,它會檢查運算數的數據類型。返回值為布爾。JavaScript只有一個全等運算符。

var a=3,b="3";
console.log(a==b); // true
console.log(a===b); // false

Python有兩個全等運算符:is 和 is not。is 運算符會測試兩個運算數是否為同一個對象,is not為is的反面。

x = 5
if (type(x) is int):
print ("true") # true
if ( type(x) is not int):
print ("true")

成員運算符

成員運算符檢查對象中的特定屬性。JavaScript只有一個成員運算符:in。

const user= {name: 'Sara', age: 19, sex: "female"};
console.log('name' in car);
// output: true

成員運算符用於驗證某個值是否為成員。Python有兩個成員運算符:in和not in。

x = 24
y = 20
list = [10, 20, 30, 40, 50 ]
if ( x not in list ):
print ("not present") # Output:True

循環

入口控制循環:for和while(在執行循環語句之前測試條件)出口控制循環:do-while(執行循環語句之後測試條件)

// for loop
var c = ["red", "green", "blue", "purple"];
for (var i = 0; i<4; i++){
console.log(c[i]);
}
// prints array// while
var c = ["red", "green", "blue", "purple"];
while(i<4){
console.log(c[i]);
i++;
} // prints array

Python有兩種循環:for和while。Python沒有內置的do-while循環。Python的while循環與JavaScript的for循環類似。例如下面的例子:

c = ["red", "green", "blue", "purple"]
i = 0
while i<4:
print(c[i])
i += 1 # i++ is invalid

Python不支持++和--運算符。我們需要使用x+=1和x-=1。for循環用來遍歷序列(列表、數組和元組)。它使用in操作符和range()函數進行迭代。可以用range()生成一系列數字,該函數接受三個參數:start,stop和step。

x = range(5)
for n in x:
print(n)           # 1,2,3,4x = range(3,9)
for n in x:
print(n)           # 3,4,5,6,7,8x = range(2,20,2)
for n in x:
print(n)           # 2,4,6,8,10,12,14,16,18

以上就是我注意到的最基本的JavaScript和Python之間的語義區別。
原文連結:https://medium.com/better-programming/semantic-differences-between-javascript-and-python-ed21b1f3ce50

相關焦點

  • 一文讀懂語義分割與實例分割
    基於深度學習的圖像分割技術主要分為兩類:語義分割及實例分割。語義分割和實例分割的區別又是什麼?語義分割會為圖像中的每個像素分配一個類別,但是同一類別之間的對象不會區分。而實例分割,只對特定的物體進行分類。
  • 一文讀懂Python的數字類型
    數字1和2分別代表兩個不同的對象,對變量重新賦值一個數字類型,會新建一個數字對象。還是要強調一下Python的變量和數據類型的關係,變量只是對某個對象的引用或者說代號、名字、調用等等,變量本身沒有數據類型的概念 。只有1,[1,2],"hello"這一類對象才具有數據類型的概念。Python 支持三種不同的數字類型,整數、浮點數和複數。
  • 一文讀懂Python裝飾器
    打開APP 一文讀懂Python裝飾器 工程師3 發表於 2018-04-28 10:48:00 談裝飾器前,還要先要明白一件事,Python 中的函數和 Java、C++不太一樣,Python 中的函數可以像普通變量一樣當做參數傳遞給另外一個函數,例如:
  • 一文讀懂Python closure
    無意中發現幾篇很nice的Python英文推文,思路、結構都清晰。在此,結合自己的理解,稍作翻譯並進行內容講解,雖然都是英文的,但是木有想像中的難的,小夥子加油哈!variables:定義在py文件最外層的稱為global variables,全局範圍可見,notes: 關於global variables可查閱之前的推文:  Python中的global variables和local variables 和  Python中的Global關鍵字代碼示例
  • 一文讀懂SQL Server和MySQL的區別
    打開APP 一文讀懂SQL Server和MySQL的區別 發表於 2017-09-28 11:29:27   作為一個資料庫管理員總是會接觸到各種大同小異的資料庫伺服器,比較典型的就是SQL Server和MySQL,當然還會有其他,比如Oracle。
  • 一文讀懂PLC與工控機區別
    很多人會有疑問,關於PLC與工控機有什麼區別呢?今天小編一文與你讀懂PLC與工控機區別。PLC採用專有的硬體設計,可以為多樣化的自動化設備提供安全可靠的控制應用和比較完善的解決方案。總的來說PLC的功能相對單一,穩定性強,造價低。
  • 一文讀懂 javascript 深拷貝與淺拷貝
    (給前端大全加星標,提升前端技能)作者:前端工匠 公號 /  浪裡行舟君 (本文來自作者投稿)前言在 javascri
  • XSS語義分析的階段性總結(二)
    前言上次分享了javascript語義分析,並且簡單介紹了新型xss掃描器的一些想法,如何在不進行大量fuzz的情況下又能準確的檢測出xss漏洞,這其中我們又可以儘量的避免觸發waf的xss防護功能!XSS語義分析的階段性總結(一)首先先接著上文介紹一下
  • 入門| 一文了解什麼是語義分割及常用的語義分割方法有哪些
    我們已經開始發展自動駕駛汽車和智慧機器人,這些都需要深入理解周圍環境,因此精確分割實體變得越來越重要。什麼是語義分割?語義分割是計算機視覺中的基本任務,在語義分割中我們需要將視覺輸入分為不同的語義可解釋類別,「語義的可解釋性」即分類類別在真實世界中是有意義的。
  • 入門 | 一文了解什麼是語義分割及常用的語義分割方法有哪些
    :有 400 多類的室內和室外場景Stanford Background Dataset:至少有一個前景物體的一組戶外場景。通過一系列卷積捕捉圖像的複雜特徵,CNN 可以將一張圖的內容編碼為緊湊表徵。但為了將單獨的像素映射給標籤,我們需要將標準 CNN 編碼器擴展為編碼器-解碼器架構。在這個架構中,編碼器使用卷積層和池化層將特徵圖尺寸縮小,使其成為更低維的表徵。解碼器接收到這一表徵,用通過轉置卷積執行上採樣而「恢復」空間維度,這樣每一個轉置卷積都能擴展特徵圖尺寸。
  • 一文讀懂電容傳感器
    藍色標題,獲取文章】 10、一文讀懂光纖傳感器 11、一文讀懂溫溼度傳感器 12
  • 計算機畢業設計中用HTML網頁調用本地Python程序
    一、編寫你的python代碼我們就先寫一個簡單的吧(這個能讓你很容易地看到效果),命名為test2.py,寫入代碼:import osfile = open('new_file' + '.txt','w')file.close()注意:這一步在測試1中不用 二、編寫你的HTML
  • 獨家 | 一文讀懂Adaboost
    早在2001年Paul Viola和Michael Jones利用Adaboost組合基於Haar特徵的弱分類器,使得人臉檢測速度大幅度提升。近年來,在Kaggle等公開的競賽中,Adaboost算法也被廣泛採用,而且大部分時候表現都不錯,比如將adaboost用在垃圾郵件檢測、手寫數字識別等項目中。
  • 一文讀懂沙坦類降壓藥(ARB)的區別
    一文讀懂沙坦類降壓藥(ARB)的區別 2020-05-29 08:02 來源:澎湃新聞·澎湃號·湃客
  • Python|extend和append的區別
    1 前言在學習python的過程中,接觸到兩種不同的在列表中添加新對象的方法,分別是extend和append,下面小編將對這兩種命令的不同進行探索。 2 準備安裝python環境。List=[]  list.append([1,2,3])  print(list)  3.5運行效果圖2 運行效果4 總結通過以上實驗,我們可以清楚看到在python語法中,extend命令和append命令的區別。
  • 一文讀懂最強中文NLP預訓練模型ERNIE
    基於飛槳開源的持續學習的語義理解框架ERNIE 2.0,及基於此框架的ERNIE 2.0預訓練模型,在共計16個中英文任務上超越了BERT和XLNet, 取得了SOTA效果。本文帶你進一步深入了解ERNIE的技術細節。
  • python的內置函數eval:字符串運算
    前言最先認識eval,是在javascript中,eval() 函數可計算某個字符串,並執行其中的的 JavaScript 代碼。在javascript中,該方法只接受原始字符串作為參數,如果 string 參數不是原始字符串,那麼該方法將不作任何改變地返回。因此請不要為 eval() 函數傳遞 String 對象來作為參數。
  • 萬字長文詳解Python正則表達式及re模塊
    (re.search(pattern, string).group())  # Hello pythonprint(re.match(pattern, string))  # None兩者的區別為:re.match只匹配字符串的開始,如果字符串開始不符合正則表達式,則匹配失敗,函數返回 None,而re.search匹配整個字符串,
  • 【Python】一文讀懂Python正則表達式常用用法
    有一點需要特別注意的是,正則表達式使用 對特殊字符進行轉義,比如,為了匹配字符串  python.org ,我們需要使用正則表達式  python.org ,而 Python 的字符串本身也用 轉義,所以上面的正則表達式在 Python 中應該寫成  python.org ,這會很容易陷入 的困擾中,因此,我們建議使用 Python 的原始字符串,只需加一個 r 前綴,上面的正則表達式可以寫成
  • 一文讀懂磁傳感器(必須收藏)
    【點擊藍色標題,獲取文章】 >、一文讀懂接近傳感器 3、一文讀懂磁傳感器 4、一文讀懂流量傳感器