变量声明的区别
在变量声明上Js使用的是var
和let
分别声明函数作用域和块级作用域。在python里直接写拉丁字母声明,无前缀。
数据类型的区别
在js中基本的数据结构有Object
,Array
等6种基本的数据结构,在python中则为list
,tuple
,dict
,set
四种。
- 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]
- tuple和list的很类似,但是它拥有一个非常重要的特性,就是初始化后不能修改,所以汉语中称为元组。它的语法不同与数组和list使用
[]
,它使用()
。注意一个非常重要的坑,在python中声明一个单元素的tuple。不能写成,(230)
,要写成(230,)
,通过逗号声明这不是一个数字计算。 - 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")
; - 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
。