本節主要內容:
1. is和==的區別
2. 編碼的問題
⼀. is和==的區別
1. id()
通過id()我們可以查看到⼀個變量表⽰的值在內存中的地址
注 ----<<<在python中,命令⾏代碼和py⽂件中的代碼運⾏的效果可能是不⼀樣的 >>>
說了這么多. 這個id()和is有什么關系呢. 注意. is⽐較的就是id()計算出來的結果. 由於id是幫我
們查看某數據(對象) 的內存地址. 那么is⽐較的就是數據(對象)的內存地址.
最終我們通過is可以查看兩個變量使⽤的是否是同⼀個對象.
== 雙等表⽰的是判斷是否相等, 注意. 這個雙等⽐較的是具體的值.⽽不是內存地址
總結:
is ⽐較的是地址
== ⽐較的是值
⼆. 編碼的補充
1. python2中默認使⽤的是ASCII碼. 所以不⽀持中⽂. 如果需要在Python2中更改編碼.
需要在⽂件的開始編寫:
# -*- encoding:utf-8 -*-
2. python3中: 內存中使⽤的是unicode碼.
編碼回顧:
1. ASCII : 最早的編碼. ⾥⾯有英⽂⼤寫字⺟, ⼩寫字⺟, 數字, ⼀些特殊字符. 沒有中⽂,
8個01代碼, 8個bit, 1個byte
2. GBK: 中⽂國標碼, ⾥⾯包含了ASCII編碼和中⽂常⽤編碼. 16個bit, 2個byte
3. UNICODE: 萬國碼, ⾥⾯包含了全世界所有國家⽂字的編碼. 32個bit, 4個byte, 包含了
ASCII
4. UTF-8: 可變⻓度的萬國碼. 是unicode的⼀種實現. 最⼩字符占8位
1.英⽂: 8bit 1byte
2.歐洲⽂字:16bit 2byte
3.中⽂:24bit 3byte
綜上, 除了ASCII碼以外, 其他信息不能直接轉換.
在python3的內存中. 在程序運⾏階段. 使⽤的是unicode編碼. 因為unicode是萬國碼. 什么內
容都可以進⾏顯⽰. 那么在數據傳輸和存儲的時候由於unicode⽐較浪費空間和資源. 需要把
unicode轉存成UTF-8或者GBK進⾏存儲. 怎么轉換呢. 在python中可以把⽂字信息進⾏編碼.
編碼之后的內容就可以進⾏傳輸了. 編碼之后的數據是bytes類型的數據.其實啊. 還是原來的
數據只是經過編碼之后表現形式發⽣了改變⽽已.
記住: 英⽂編碼之后的結果和源字符串⼀致. 中⽂編碼之后的結果根據編碼的不同. 編碼結果
也不同. 我們能看到. ⼀個中⽂的UTF-8編碼是3個字節. ⼀個GBK的中⽂編碼是2個字節.