代碼塊
代碼塊
-
代碼塊的定義
- 所有的代碼都依賴於代碼塊進行執行,代碼塊可以是一個文件、函數、類等
- 交互式命令下一行就是一個代碼塊
-
代碼塊的緩存機制
- 同一代碼塊下的緩存機制
- 前提條件:代碼在同一個代碼塊內
- 機制內容:Python在執行初始化對象的時候,回檢查之前有沒有初始化過這個變量,如果有就指向這個內存。
- 適用的對象:int、bool、str
- 具體細則:所有的數字、bool、幾乎所有的數字
- 優點
- 節省內存
- 提升效率
- 不同代碼塊下的緩存機制(小內存池)
- 前提條件:代碼在不同代碼塊內
- 機制內容:Python在執行初始化對象的時候,回檢查之前有沒有初始化過這個變量,如果有就指向這個內存。
- 適用的對象:int、bool、str
- 具體細則:-5~256的數字、bool、有規則的字符串(經過測試,好像對中文有歧義)
- 優點
- 節省內存
- 提升效率
- 同一代碼塊下的緩存機制
-
同一個代碼塊實例
-
數字
i = 100 i1 = 100 print(id(i)) print(id(i1)) # 輸出 4562324240 4562324240
-
bool
b1 = True b2 = True print(id(b1)) print(id(b2)) # 輸出 4314780784 4314780784
-
字符串
s1 = "無敵" s2 = "無敵" print(id(s1)) print(id(s2)) # 輸出 4317723528 4317723528
-
函數
def sum(n): return n * n def sum1(n): return n * n print(id(sum(10))) print(id(sum1(10))) # 結果 4511357712 4511357712
-
類
-
-
不同代碼塊的實例
-
數字
>>> i = 100 >>> i1 = 100 >>> print(id(i)) 4530920208 >>> print(id(i1)) 4530920208 >>> i = 800 >>> i1 = 800 >>> print(id(i)) 4533004816 >>> print(id(i1)) 4533556208
-
bool
>>> b1 = True >>> b2 = True >>> print(id(b1)) 4530513008 >>> print(id(b2)) 4530513008
-
字符串
>>> s1 = "aaaa" >>> s2 = "aaaa" >>> print(id(s1)) 4533563264 >>> print(id(s2)) 4533563264 # 經過測試,好像對中文有歧義
-