python 小數據池、代碼塊詳解
阿新 • • 發佈:2018-08-09
得到 pyc 長度 超過 新的 小寫 bsp div 開始
首先我們來看看下面的問題,第一次遇到還以為見鬼了。
看到上面這麽多種情況剛開始直接就懵逼了。100ID一樣,1000就不一樣。終端運行情況居然會和pycharm不一樣。
後面終於搞懂了,原來這裏頭有大學問,且看下面分析。
一、代碼塊
Python程序是由代碼塊構造的。塊是一個python程序的文本,他是作為一個單元執行的。
代碼塊:一個模塊,一個函數,一個類,一個文件等都是一個代碼塊。
而作為交互方式輸入的每個命令都是一個代碼塊。
也就是說:
所以這就很好解釋上面的情況了。但是當a,b的值為100時,在終端居然ID一致,這用代碼塊來解釋根本就解釋不通,所以得引出一個新的知識點,那就是數據池,。
二、小數據池
小數據池,也稱為小整數緩存機制,或者稱為駐留機制等。小數據池裏只有三種數據類型:整數,字符串,布爾值
python會將一定規則的字符串在字符串駐留池中,創建一份,當你將這些字符串賦值給變量時,並不會重新創建對象, 而是使用在字符串駐留池中創建好的對象。
使用小數據池的優點:能夠提高一些字符串,整數在時間和空間上的性能;需要值相同的字符串,整數的時候,直接從‘池’裏拿來用,避免頻繁的創建和銷毀,提升效率,節約內存。
1、關於整數
小數據池的範圍是-5~256 ,如果多個變量都是指向同一個(在這個範圍內的)數字,他們在內存中指向的都是一個內存地址。但是超過這範圍的數字,就不會加入數據池。
2、關於字符串
字符串要重幾個大方面來進行討論。
2.1:字符串的長度為0或者1,默認都采用了駐留機制(小數據池)。
2.2,字符串的長度>1,且只含有大小寫字母,數字,下劃線時,才會默認駐留。
3.3,用乘法得到的字符串,分兩種情況。
33.1 乘數為1時:默認駐留;
3.3.2乘數>=2時:僅含大小寫字母,數字,下劃線,總長度<=20,默認駐留
4、指定駐留
from sys import intern a = intern(‘hello!@‘*20) b = intern(‘hello!@‘*20) print(a is b) #指定駐留是你可以指定任意的字符串加入到小數據池中,讓其只在內存中創建一個對象,多個變量都是指向這一個字符串。
python 小數據池、代碼塊詳解