1. 程式人生 > >Python和JavaScript在語法上的區別[1]

Python和JavaScript在語法上的區別[1]

變數宣告的區別

在變數宣告上Js使用的是varlet分別宣告函式作用域和塊級作用域。在python裡直接寫拉丁字母宣告,無字首。

資料型別的區別

在js中基本的資料結構有Object,Array等6種基本的資料結構,在python中則為list,tuple,dict,set四種。

  1. list類似Js中的Array。但是二者在操作上有著很大的不同。比如在Js中獲取一個數組的長度,Array.length.在Python中,則是len(目標list)獲取長度。在索引上,JS的陣列是無法進行倒數,而python的list可以通過list[-1],list[-2]進行倒數。在Js中往一個數組新增一個元素是通過Array.push(ele)
    方法,在Python中則是List.append(ele)。在刪除最後一個元素方面,js和python沒有區別都是使用pop()方法。但是js不存在pop()f方法指定索引刪除元素,而在python中,List.pop(i)可以刪除指定元素。在元素插入上python擁有js沒有的insert(index,ele)方法,這個方法可以指定索引,插入元素,如:List.insert(2,"global");在多維陣列方面,二者都是一樣array[i][j][k]
  2. tuple和list的很類似,但是它擁有一個非常重要的特性,就是初始化後不能修改,所以漢語中稱為元組。它的語法不同與陣列和list使用[]
    ,它使用()。注意一個非常重要的坑,在python中宣告一個單元素的tuple。不能寫成,(230),要寫成(230,),通過逗號宣告這不是一個數字計算。
  3. dict的英文全稱就是dictionary,就是字典。它非常類似於js中物件。也是一種鍵值對的形式。但是二者在語法上有一定的區別,Js獲取一個物件的屬性有兩種寫法obj.prop/obj[propname]。在python中。則是dict["propname"]。注意在python中的鍵名一定要用引號打上。在JS中當我們需要檢查一個物件中是否存在某個屬性名,我們往往使用obj.hasOwnProperty("propname")或者"propname" in obj
    兩種方式(注意這裡的屬性名都是打上引號的),返回布林值進行判斷。在python的dict中,有兩種方法判斷,第一種和js物件一樣,通過in關鍵字進行判斷,第二種則是使用get()方法,看是否返回None判斷,如:T.get("name");
  4. set類似於dict,但是它只是鍵值對中鍵的集合,在Js中的ES6中已經新增此類概念。

迴圈遍歷的區別

在Js中開發者會把條件語句寫入()中,在{}中獲取迴圈遍歷結果,如:

 for( var i in names){  //注意,在js中i是指標
     return names[i]
   }

Python不同,條件語句直接暴露在外面,通過表示迴圈遍歷的結果:

 for name in names:          //注意,在python中返回的遍歷結果
     print (name) 

同樣的while迴圈也是如此。

在這裡要講一個python中特有的range()函式,它接收一個引數n,然後形成一個從0~n的一個整數序列,也就是js中的陣列。這個range()函式可以被直接用於迴圈遍歷。

判斷語句的區別

類似於迴圈語句的語法,條件語句暴露在外面,:後面寫判斷結果,但是不同與js的else if ,在python中會簡寫成elif