隨着人工智能技術的普及,愈來愈多的前端程序員開始關注相關技術。Python 做爲人工智能領域最經常使用的語言,與前端程序員平常使用的語言 JavaScript 同屬腳本語言,且在二者發展過程當中,社區也多有相互借鑑之處,所以有不少類似。一個熟悉 JavaScript 語言的前端程序員,經過掌握了他們之間的不一樣之處,能夠快速上手 Python 。前端
如下是我學習過程當中記錄的 Python 不一樣於 JavaScript 的語法點,方便隨手查閱。c++
x
是非零數值、非空字符串、非空list等,就判斷爲True
,不然爲False
。if a > b:
a++
elif:
b++
else:
c++
複製代碼
try:
print('try...')
r = 10 / 0
print('result:', r)
except ZeroDivisionError as e:
print('except:', e)
finally:
print('finally...')
print('END')
複製代碼
列表分爲list和tuple程序員
獲取list長度 len()數組
獲取list最後一個參數 datas[-1],倒數第二個 datas[-2]bash
list操做方法:app
末尾增長 datas.append(data)函數
指定位置插入:datas.insert(index, data)學習
刪除末尾:datas.pop()ui
刪除指定位置:datas.pop(index)人工智能
list中數據類型可不一樣,這一點與JavaScript相同
tuple是不可變的list
tuple定義:(1, 2, 3)
僅一個元素的tuple:(1.2, )
切片:L[a: b: c]從a到b(左閉右開,支持倒數)每c個取一個
tuple和str也可切片,結果仍是原類型
for in迭代dict默認是迭代key
迭代dict的value:for value in d.values()
迭代dic的key、value:for k, v in d.items()
下標循環:for i, value in enumerate(['A', 'B', 'C']):
引用多個變量的循環:for x, y in [(1, 1), (2, 4), (3, 9)]:
列表生成式:[x * x for x in range(1, 11) if x % 2 == 0],[m + n for m in 'ABC' for n in 'XYZ']
列表生成器:可動態的生成列表中的元素,節省內存空間
列表生成器(generator)建立方式
將列表生成式外面的[]改成()
定義generator函數
變量互換:a, b = b, a
Iterable包括list、tuple、dict、set、str
Iterator包括generator
Iterator是惰性求值的
可以使用iter()函數將Iterable轉換爲Iterator
Iterable和Iterator均可使用for,只有Iterator可以使用next()
map()的返回值類型是Iterator
reduce()的回調函數接受兩個參數,相似斐波那契數列,返回值類型是list元素的類型
sorted()函數第二個命名關鍵字參數,將原來的元素映射爲可排序的
def abc(x):
return 0
複製代碼
函數能夠返回多個值,本質上是構成了一個tuple
可用power(x, n=2)的形式定義默認參數
如調用函數時不是按順序省略參數,可用以下形式:enroll('Adam', 'M', city='Tianjin')
默認參數必須指向不變對象,不然屢次調用函數且修改參數時可能存在問題
參數類型:
通常的參數叫作位置參數,經過在參數表中的位置代表關係;
可變參數定義函數calc(*numbers)會將傳入的多個參數組成tuple,在調用時calc(*[1,2,3])表示將該list做爲可變參數傳入;
關鍵字參數定義函數def person(name, age, **kw):會將傳入的鍵值對做爲dict傳入,調用如person('Adam', 45, gender='M', job='Engineer');
命名關鍵字參數爲分隔符*以後的參數def person(name, age, *, city, job),必須這樣調用person('Jack', 24, city='Beijing', job='Engineer'),若是函數定義中已經有了一個可變參數,後面跟着的命名關鍵字參數就再也不須要一個特殊分隔符了:def person(name, age, *args, city, job):,命名關鍵字參數傳入時必須帶有參數名,命名關鍵字參數也可設置默認值def person(name, age, *, city='Beijing', job):
各種型順序必須是:必選參數、默認參數、可變參數、命名關鍵字參數和關鍵字參數
匿名函數 lambda x: x * x 僅可有一個不須要寫return的表達式
裝飾器@可調用高階函數修改函數定義
偏函數functools.partial的做用就是,把一個函數的某些參數給固定住(也就是設置默認值),返回一個新的函數,調用這個新函數會更簡單。
__
開頭,就變成了一個私有變量(private),只有內部能夠訪問,外部不能訪問