數字python
整型,浮點型,布爾型,複數
組數據庫
序列,集合,字典
# 序列-字符串 str 不可變類型 # 序列-列表 list [1,2,3,4,5,6,'as'] 可變類型 # 序列-元組 tuple (1,2,3,4,5,6,'as') 不可變類型 #和列表選擇、切片很類似 #type((1)) int;type(('as')) str 此處()不是元祖,而是運算符 # ord() 查詢字符串返回對應的 ASCII 數值 # 集合 set {1,2,3,4,5} # 1 無序 # 2 不重複 {1,1,2,2,3,3} {1,2,3} # 3 差集- {1,2,3,4,5}-{3,4} {1,2,5} # 4 交集& # 5 並集| # 6 type({}) 爲dict字典;set() 建立一個無序不重複元素集 # 字典 dict {'q':'打擊','w':'前進'} # key不重複 # key需爲不可變類型,不能爲列表,能夠爲元組 # {} 定義空字典
set {1,2,3,4,5}編程
1 無序 2 不重複 {1,1,2,2,3,3} {1,2,3} 3 差集- {1,2,3,4,5}-{3,4} {1,2,5} 4 交集& 5 並集| 6 type({}) 爲dict字典;set() 建立一個無序不重複元素集
dict {'q':'打擊','w':'前進'} key不重複 key需爲不可變類型,不能爲列表,能夠爲元組 {} 定義空字典安全
注: 1.列表能夠存放不一樣類型的數據,是最經常使用的Python數據類型。與字符串不一樣,列表元素支持改寫。 2.列表和元組的區別在於:列表中的元素的值能夠修改,而元組中的元素的值不能夠修改。元組比列表更加安全,由於不能修改 3.集合一個功能是進行集合操做,另外一個功能是消除重複的元素。
# 區分包和文件夾 包內含__init__.py文件 此模塊名爲:init,內容可爲空,加上,可解決 # import引入模塊 # from t import c1 從t模塊引入c1類、方法、變量或者 從t文件引入c1模塊 # from t import * 可引入t全部類 不推薦,當命名衝突時難處理 # python 一行建議不超過80,換行,上行末尾加:\,不推薦,可用括號 # 包和模塊不會被重複導入 # 避免循環引入模塊
# 特殊類:枚舉 enum (from enum import Enum) # 枚舉標籤名稱最好用大寫,表示常量 # 枚舉的意義重在標籤,不在數值 # 字典和類變量的缺點是:可變,值可被輕易更改;沒有防止相同標籤的功能 # 枚舉類型:VIP.GREEN 枚舉名稱:VIP.GREEN.name 枚舉值:VIP.GREEN.value # 枚舉能夠被for in遍歷,遍歷VIP.__members__.items()或VIP.__members,可將別名加入遍歷 # 枚舉能夠作==比較,不能作大小比較 # 枚舉值相同時,第二個標籤將成爲第一個的別名 # 用法:在數據庫中存儲數值,在代碼中用標籤表明類型,經過數字轉換成數據類型 a=1 VIP(a) # 值需強制爲整型數字,不準值相同時(from enum import IntEnum,unique) ,class VIP(IntEnum,unique):
#枚舉案例閉包
from enum import IntEnum,unique #from enum import Enum class VIP(IntEnum): YELLOW=1 RED=2 BLUE=2 GREEN=4 print(VIP.GREEN) print(VIP.GREEN.name) print(type(VIP.GREEN),type(VIP.GREEN.name)) print(VIP.GREEN.value) for v in VIP: print(v) for v in VIP.__members__: print(v) for v in VIP.__members__.items(): print(v) a=1 print(VIP(a))
# 函數能夠做爲結果被返回,函數能夠賦值給另一個變量 # 閉包(和函數的做用域有關) # 閉包=函數+環境變量 # 環境變量:定義在函數外部,非全局變量,避免外部對其影響 # 環境變量保存在 函數.__closure__[0].cell_contents中 # nonlocal將變量轉爲環境變量 # 閉包容易形成內存泄漏,用面向對象更加主流 #三目運算 x if x>y else y # map 函數,序列 每一個元素依次執行函數 # 結合lambda匿名函數使用 list_x=[1,2,3] list_y=[1,2,3] r=map(lambda x,y:x*x+y,list_x,list_y) # reduce在python3中已不是全局函數 from functools import reduce # 連續計算 返回結果
# 閉包案例展現app
def curve_pre(): a=25 def curve(x): return a*x*x return curve f=curve_pre() print(f.__closure__) print(f.__closure__[0].cell_contents) print(f(2)) #閉包案例:計算走了多遠 origin=1 def dis(pos): def do(x): nonlocal pos pos=x+pos return pos return do t=dis(origin) print(t(3)) print(t(3))
# 不改變原有函數,增長新的特性 # 最有價值的功能 @+裝飾器的名字 不改變原函數調用方式 # 直接調用原函數便可,無需經過新函數(體現出原函數和新函數之間的關聯) # 爲知足原函數可任意傳入參數,可在裝飾器內的函數加入 可變參數(*任意+參數名):例如:wrapper(*args) # **kw 關鍵字參數,能夠指定任意數量,打印kw會以字典形式出現 # 爲支持**kw關鍵字參數,可在裝飾器內部加入參數 **kw
# 裝飾器案例函數
import time def decorator1(func): def wrapper(*args,**kw): func(*args,**kw) print(time.time()) return wrapper @decorator1 def f1(): print('打印如今時間:') #f=decorator1(f1) #f() 這裏就能夠看出裝飾器的好處能夠直接引用f1 f1() @decorator1 def f2(myName): print(myName,'打印如今時間:') f2('MA') @decorator1 def f3(myName,**kw): print(myName,'打印如今時間:') print(kw) f3('MA',a=1,b=2)