一、開發基礎(1)
阿新 • • 發佈:2018-08-05
關系 精度 與或非 實體 lam 打印 獲取 表達式 with
語言
Python
選擇Python是因為Python是一門動態腳本型語言,也有人稱之為膠水語言,實在是因為Python的應用太廣泛了,什麽都能做,但想做好還是要看領域。
由於Python是邊解釋邊運行的,所以其速度肯定不如編譯型語言如C的。
Python的語法簡單,類型不需提前聲明,對類的繼承/多態實現比較好,用縮進控制語句塊,總體來說Python還是很適合做開發入門的,熟悉了業務邏輯後,如果有需要,還可深入其它語言如Java/C#。
Python常用的解釋器是CPython,用C語言實現的,在早期引入了全局解釋鎖/全局線程鎖的概念,屬於歷史遺留問題,至今已成為連Python之父也覺得棘手的問題。
只需要知道,這個全局解釋鎖導致Python的多線程只能實現並發,而無法實現並行,簡而言之就是同時只能有一個線程處於運行中,後面會詳細介紹並發並行與多路復用io的概念。
Python現存的大版本分為2和3,建議直接學3,2現在處於陣痛期,等到更多的庫用3重寫後,相信使用2的人會越來越少,這是發展趨勢。
類型
iterable 可叠代對象,實現了__iter__
方法;
iterator 叠代器,iterable調用__iter__
方法返回iterator,iterator實現了__next__
方法;
generator 生成器,不需要__iter__
和__next__
,只要有yield關鍵字即可。
- 字符串
- 字符串是str類的實例,支持encode()方法用於編碼成其它如utf8/ascii等;
- 字符串是不可變類型,創建後就無法改變原字符串,但是可以創建新的字符串替換引用;
- 字符串常用的方法:
- 索引
- 切片
- 合並字串:‘‘.join(iterable)
- 分割字串:string.split([char][,num]) 以指定次數按指定字串進行分割,返回list
- 比較字串:直接==/!=或string.startwith([char][, start[, end]])/endwith
- 反轉字串:函數/列表reverse方法/切片
- 查找字串:string.find([char][, start[, end]])/rfind
- 替換字串:string.replace(old, new[, num])實際是返回一個新的字串,該方法不支持正則
- 格式化:‘{下標位置:[填充字][對齊符<>^][寬度][千位分隔符,][精度.][類型]‘.format() 例子如‘{0:a^10,.2f}‘.format(2333.33)打印為a2,333.33a
- 列表
- 列表是可變類型,支持原處修改,因此要小心將列表作為參數傳入函數;
- 列表常用方法:
- 索引、切片
- append添加任意對象
- copy淺拷貝,全切片也是淺拷貝
- remove移除靠前的對象
- index查找值的索引,若無則報錯,因此最好用in判斷
- sort排序,內置reverse參數默認False
- insert/pop/extend 插入/彈出/合並
- 字典
- key-value集合,是python中hashtable的實現;
- dict是無序的,但是從3.5開始,默認的dict是部分有序的,即根據存入鍵值對的順序排序,但是在使用中它是無序的就行了,因為我們不通過下標去索引值;
- 創建方法:賦值創建d = {‘a‘:1, ‘b‘:2},工廠方法dict(),fromkeys方法d = dict.fromkeys(iterable, defaultvalue)
- 常用方法:
- 刪除key-value,直接調用del d[key]或pop(key, default)
- 遍歷items(),返回key-value元組的列表,keys()返回key列表,values()返回value列表
- get(key)獲取指定key的值
- copy()淺拷貝
- 排序直接調用sorted方法,sorted(d.items(), key=lambda cmp: cmp[0]/cmp[1]),返回鍵值對元組的列表
- 更新字典update(dict)
- 解包:a, b, *c = dict.values()
- 元組
- 有序不可變類型,創建後則不可原處修改;
- 常用方法:
- 索引、切片
- 解包:a, b, c, ... = tuple
- 列表支持的查詢操作,元組基本都支持
- 集合
- Python中的hashset實現;
- 常用於過濾列表中的重復元素,list(set(list))
- 創建 set(iterable) 或 {a, b, c, d}
- 差集 x - y
- 並集 x | y
- 交集 x & y
- 對稱差集 x ^ y
- 文件
- 將文件讀取到內存中作為一個對象進行處理;
- 常用操作:
- 創建 open(filename, mode=‘r‘/‘w‘/‘a‘/‘b‘, encoding=None),圖片/視頻等文件必須用‘b‘模式打開
- 讀取readlines叠代器讀取,readline生成器讀取,read一次性讀取
- 寫入write一次性寫入,writelines列表寫入
- 刪除 os.remove(f)
- 重命名 os.rename(old, new)
- 操作符
- a is b, a is not b 引用實體測試,判斷是否具有相同id
- n = a if x else b 三元選擇表達式
- 邏輯and/or/not 邏輯與或非
- 位&、|、^、>>、<<、~ 按位與/或/異或/右移/左移/取反
- a in b, a not in b 成員關系測試,判斷包含關系
- 比較 <、>、<=、>=、==、!=
- 算術+、-、*、/、//、%、** 算術加/減/乘/除/地板除/取余/冪
- 地板除總是向下取整,截斷除總是忽略小數部分
- 進制轉換
- 其它進制轉十進制用int(str, str的進制)
- 其它進制轉十六進制用hex(str, str的進制)
- 其它進制轉二進制用bin(str, str的進制)
- 其它進制轉八進制用oct(str, str的進制)
一、開發基礎(1)