Python 代碼塊 小資料池

來源:互聯網
上載者:User

標籤:輸出變數   code   分享圖片   規則   緩衝機制   字串駐留   其他   byte   img   

一  代碼塊

什麼是代碼塊???

     Python程式是由代碼塊構造的。先舉一個例子:

1 for i in ‘12334567‘:2     print(i)
1 def func():2     print(‘Hello,world!‘)
1 class A:2     name = ‘colin‘

從上面的例子可以稱為代碼塊,雖然上面的縮排的內容都叫代碼塊,但是他們並不是python中嚴格定義的代碼塊。

那麼,python中真正意義上的代碼塊又怎麼定義?

因此,我們定義:一個模組,一個函數,一個類,一個檔案等都是一個代碼塊。

此外,在電腦終端模式下,輸入的每個命令我們也可以認為是一個代碼塊。如:

二  id, is , == 之間的關係 在Python中,id是什嗎?

 我們可以理解為id是電腦的記憶體位址,當你利用id()內建函數去查詢一個資料的記憶體位址,例如:

1 name = ‘colin‘2 print(id(name))    # 1986166776248 

從上面的程式碼分析可知,當調用python中id()指令時,會輸出變數name的記憶體位址,其地址位置為:1986166776248  ,第二次調用後,記憶體位址發生變化,為:1957356364216 。可知,變數在記憶體中地址是不固定的。

 is 是什嗎? == 又是什嗎?

我們將is 用來判斷兩個變數的id值是否相等,而 ‘==’ 是表示該符號兩邊的數值是否相等。

 如果記憶體位址相等,那麼== 兩邊所指向的是同一個記憶體位址。

總的來說,我們總結為:如果is是True,那麼== 一定是True

三  小資料池(緩衝機制,駐留機制)

 什麼是小資料池?

小資料池也稱為小整數緩衝機制,或者稱為駐留機制等等,主要是用於python對記憶體做的一個最佳化,通常將-5!~256的整數,以及一定規則的字串,提前在記憶體中建立了池,容器,容器裡固定的放入這些數。

小資料池的應用資料類型:整數,字串,bool值。

而為什麼要使用小資料池???

其優點主要有以下兩點:

1. 節省記憶體,

2. 提高效能與效率。

python會將一定規則的字串在字串駐留池中,建立一份,當你將這些字串賦值給變數時,並不會重新建立對象, 而是使用在字串駐留池中建立好的對象。

int:對於整數來說,小資料池的範圍是-5~256 ,如果多個變數都是指向同一個(在這個範圍內的)數字,他們在記憶體中指向的都是一個記憶體位址。

str:字串要從下面這幾個大方向討論:

1,字串的長度為0或者1,預設都採用了駐留機制(小資料池)

2,字串的長度>1,且只含有大小寫字母,數字,底線時,才會預設駐留。

3,用乘法得到的字串,分兩種情況。

  3.1 乘數為1時:

 僅含大小寫字母,數字,底線,預設駐留。

含其他字元,長度<=1,預設駐留。

含其他字元,長度>1,預設駐留。

  3.2 乘數>=2時:

僅含大小寫字母,數字,底線,總長度<=20,預設駐留。

在大環境下的python3中:

str:記憶體(內部)編碼方式為Unicode

bytes:python的基礎資料類型之一,它和str相當於雙胞胎,str擁有的所有方法,bytes類型都適用。

編碼之間不能相互識別:

1. 由於編碼之間不能相互識別。(由於:str 內部編碼是以unicode方式。)

2. 網路傳輸,或者硬碟儲存的01010101,必須是以非unicode編碼方式的01010101.

 

 # str --------> bites encode 編碼

1 s1 = ‘colin‘2 s2 = ‘明天‘3 b1 = s1.encode(‘utf-8‘)4 print(b1)    # b‘colin‘5 b2 = s2.encode(‘gbk‘)6 print(b2)     # b‘\xc3\xf7\xcc\xec‘

# bytes --------> str decode 解碼

1 b1 = b‘\xc3\xf7\xcc\xec‘     # gbk的bytes2 s2 = b1.decode(‘gbk‘)3 print(s2)    # 明天

 

 

 

 

 本文大量引用的地址為:

http://www.cnblogs.com/jin-xin/articles/9439483.html#4039042

 

Python 代碼塊 小資料池

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.