Python學習筆記 第六天

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

相關文章
相關標籤/搜索