Python學習筆記 第六天html
1.學習內容回顧與拓展python
1.1 字典緩存
使用可哈希的數據類型做爲keyide
字典的增刪改查操做,具體內容看昨天筆記函數
嵌套,解包等性能
2.今日學習內容學習
2.1 is與"=="的區別優化
2.1.1 變量 :用來identify(標識)一塊內存區域,爲了方便表示內存,操做變量的實質是:操做變量指向的那塊內存單元。 編譯器負責通知計算機分配內存。可使用Python內置函數id()來獲取變量地址,id(object)返回 對象object在其生命週期內位於內存中的地址編碼
2.1.2 內存 :內存是電腦硬件用來存儲數據的,能夠理解爲:內存是由一個個小格子組成,每一個格子的大小是一個字節,只能存放1byte的數據。須要依賴內存地址來查找數據。地址是內存的標識符,至關於門牌號。命令行
找內存地址-》操做內存-》表現爲:操做變量
2.1.3 區別
在python中一切皆對象,對象之間可否用"=="和is,區別在於:
is是比較兩個對象的id是否相等,也就是比較兩個對象是否爲同一個實際對象,是否指向同一塊內存。
"=="是比較兩個對象的內容是否相等,默認調用對象de __eq__()方法
Python內部作了優化工做,對於整數對象,Python把一些頻繁使用的整數對象緩存起來,保存到small_list鏈表中。在Python的整個生命週期中,任何調用這些小整數的地方,都不須要從新建立一個對象。範圍是[-5到256]
注意:
1.小整數對象是全局解釋器內重複使用,永遠不會被回收。同一個代碼塊中的不可變對象,只要值相等,就不會建立新的對象。
2.出於對性能的考慮,凡是不可變對象,在同一個代碼模塊中,只要是值相同的對象,都不會被重複建立。
(字符串中單個*20之內,內存地址是同樣的。若是超過,即*21以上,內存地址仍是不一樣的。切不能存在特殊字符,即必須所有由字母組成)(Python3.7及之後的版本不適用)
3.不只是整形,字符串也一樣遵照上述規則
複習:可變類型與不可變類型
可變數據類型
元組tuple 字符串string 整數int 布爾類型 bool
可變數據類型:
列表list 字典dict 集合set
2.1.4 代碼塊:程序的最小基本單位
Python程序即是基於代碼塊組成的。
一個代碼塊文件,一個函數體,一個類,交互式命令行中的單行代碼都算是代碼塊。
在一個py文件中,狀況相似,可是又不同的地方。
1.int類型,只要在同一個代碼塊中的值相同,地址則相同
2.str類型,只要長度不超過20,哪怕含有特殊字符,地址也相同
3.編碼與解碼
3.1 常見編碼:二進制 01
3.2 編碼與解碼(以ASCII爲例)
3.2.1 簡介
編碼與解碼是一種映射關係。
解碼,好比ASCII中的字符A對應的十進制是65,對應的二進制編碼爲0100 0001。
編碼即爲解碼的逆向工程,當計算機讀到 0100 0001 就對應ASCII的表中查看,對應爲A
解碼encode:真是字符與二進制串的對應關係,即
真實字符->二進制串
編碼decode:二進制串與真實字符的對應關係,即
二進制串->真實字符
注意:1.編碼和解碼應該是同一個碼
2.在文件開頭,指定編碼,例如
#-*-coding:utf-8-*- (python)
<meta charset = 'utf-8'>(html)
@charset'utf-8'(CSS樣式)
3.2.2常見編碼方式
3.2.2.1 ASCII
不支持中文,支持英文 數字 符號
8位一個字節
3.2.2.2 GBK 國標碼
支持中英文,數字和符號
英文 16位 2字節
中文 16位 2字節
3.2.2.3.Unicode 萬國碼
支持中英文,數字和符號
英文 32位 4字節
中文 32位 4字節
3.2.2.4.UTF-8 長度可變的萬國碼
支持全部
英文 8位 1字節
中文 24位 1字節
注意:Python 2 默認使用 ASCII編碼,Python 3 默認使用Unicode顯示全部內容 pycharm默認使用UTF-8