數:python
str:使用單引號或雙引號表達,不可變的,一旦建立不可更改,可使變量賦予不一樣的字符串,但字符串自己是沒有更改的;閉包
list:有序的集合,可變的基礎數據類型;app
clear(),copy(),append(),count(),pop(),index(),extend(),insert(),remove(),reverse(),sort()dom
tuple:與list類似,但初始化後不得改變,使用()表達,單一元素時後面須要附加逗號(1,)('s',);函數
dict:key與value存儲,查找速度快,佔用內存較大;在一個dict中key是惟一的,因此key不能不存在,也不能是可變對象,而且屢次對一個key賦值,會把前一個value覆蓋,只會保留最後一個;對象
clear(),copy(),fromkeys(),itmes(),keys(),values(),pop(),popitem(),setdefault(),get(),update()繼承
set:用{}表達,沒有重複的數據;遞歸
clear(),copy(),add(),remove(),pop(),update()內存
循環:第一種是for i in ...,把每個元素代入x中;第二種是while EXPRE,只有不知足表達式纔會中止循環;break退出所有循環,continue跳過本次循環;ci
位置參數:不可缺乏,順序對應;
默認參數:建立函數時設定參數默認值,默認參數必須指向不變對象,
可變參數:用*定義可變參數(def test(*args):),可變參數容許你傳入0個或任意個參數(test(1,'a',None,True)),這些參數被調用時會自動封裝爲一個tuple;若是有一個要被傳入的參數L是list或tuple,能夠*L傳入(test(*L));
關鍵字參數:用**定義可變參數(def test(**kw):),關鍵字參數容許傳入0個或任意個帶有參數名的參數(test(city='beijing',job='engineer')),參數會被封裝爲dict,若是有一個要被傳入的參數D是dict,能夠**D傳入(test(**D));
命名關鍵字參數:在參數前以*標記(test(*,name)),若是前面有可變參數,*能夠省略(test(*args,name));
組合參數:參數爲固定順序,(位置參數,默認參數,可變參數,命名關鍵字參數,關鍵字參數)
遞歸函數:函數還調用了本身自己就爲遞歸,大量遞歸會產生棧溢出,尾遞歸能夠解決棧擴展,但python也會溢出;
切片:0能夠略寫,L[:]複製原L,L[:10]前十個,L[-10:]後十個,L[:1]第一個,L[-1:]最後一個,L[:10:2]前十個數每兩個取一個,L[::-1]翻轉
迭代:給定一個list或tuple,用for遍歷每個元素,就成爲迭代;
列表生成式:[x for x in range(9)]生成0-8的list,[x*x for x in range(9)]生成0-8平方的list,[x+y for x in 'AB' for y in 'CD']生成全排列,[x*x for x in range(10) if x % 2 == 0]生成偶數平方的list,
閉包:儲存其所在做用域的函數;
做用域:當程序在處理變量時,存放變量名的空間,也稱爲命名空間;當class def定義時纔會產生,產生是局部做用域,if for while try等語句塊不會產生做用域;查找變量優先級:局部做用域>嵌套做用域(閉包)>全局做用域,全局變量不會被局部變量干擾,全局變量只能以只讀方式被局部做用域訪問,若是想在局部做用域中修改或建立全局變量,須要用global聲明;
多態:鴨子類型,不知道變量指定的是什麼類型,但能夠實現最終的結果;
封裝:把函數封裝起來,不知怎麼實現的過程,但調用便可實現;
繼承:子類能夠繼承基類的屬性,能夠重構基類的屬性;
對象:對象有屬性和方法,屬性就是對象中的變量,方法就是存放在屬性中的函數,與函數區別在於方法有一個self參數,這個參數是關聯到它自身所屬的instance上,函數是一個能夠執行操做返回值的程序段;
類:就是一組對象,能夠被實例化;指定子類的超類(基類)即爲繼承,能夠指定多個超類(多重繼承),但若是多個超類有相同命名的方法,只能匹配第一個方法,全部應注意多重繼承時指定超類的順序;
callable(),hasattr(),getattr(),setattr(),type(),__dict__,__class__,random.choice(seq)從非空序列中隨機挑選一個元素,