python的 == 和 is,編碼和解碼
阿新 • • 發佈:2018-08-02
傳輸 bsp 成對 pri 列表 內存地址 進制 back 默認
is和 ==
== 比較兩邊的值
a = ‘alex‘ b = ‘alex‘ print(a == b) True n = 10 n1 = 10 print(n == n1) True li1 = [1,2,3] li2 = [1,2,3] print(li1 == li2) True
is 比較內存地址
查詢內存地址 id()
a = ‘alex‘ print(id(a)) # 36942544 內存地址 n = 10 print(id(n)) #1408197120 li = [1,2,3] print(id(li)) #38922760
a = ‘alex@‘ a1 = ‘alex@‘ print(a is a1) # Fales n = 5//2 n1 = 2 print(n is n1) #True a = ‘a‘*21 b = ‘a‘*21 print(a is b)
小數據池
範圍: -5~256
n = -6 n1 = -6 print(n is n1) #False n = -5 n1 = -5 print(n is n1) #True n = 257 n1 = 257 print(n is n1) #True
字符串
單個字符串*20以內的內存地址是一樣的(字符串中不能有特殊符號如:+ - * / @ ! ......等等)
單個字符串*20以上的內存地址是不相同
a = ‘alex@‘ a1 = ‘alex@‘ print(a is a1) # Fale
a = ‘aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa‘ b = ‘aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa‘ print(a is b) # True
列表
li =[1,2,3] li2 =[1,2,3] print(li is li2) #False
元組
tu =(1,2,3) tu1 =(1,2,3) print(tu is tu1) #False
字典
dic1 = {‘name‘:‘alex‘} dic = {‘name‘:‘alex‘} print(dic1 is dic) #False
註意:pycharm是個坑, 一個py文件中所有相同的字符串 一般都是使用一樣的內存地址
編碼 解碼
編碼有: asiic,unicode,gbk,utf-8,utf-16
ascii 碼:不支持中文,支持英文,數字,符號, 8位,一個字節
gbk碼:國標碼,支持中文,英文,數字,符號. 英文每16位兩個字節, 中文16位 二個字節
unicode : 萬國碼,支持中文,英文,數字,符號, 英文 32 位 四個字節. 中文 32位 四個字節
utf-8:目前使用最多的編碼, 就是長度可變的萬國碼,最少用8位. 英文 8位 一個字節 中文 24位 三個字節
Python3中程序運行階段使用的是unicode,可以顯示所有的內容
bytes類型:傳輸和存儲都是使用bytes
pycharm 存儲的時候默認是使用utf-8
.encode(‘編碼‘) 拿到明文後編碼後對應的二進制的字節
.decode(‘編碼‘) 將編碼後的字節解碼成對應的明文
它倆操作都要通過unicode作為中間橋梁來鏈接
s = ‘alex‘ # print(s.encode(‘utf-8‘)) # 編碼 encode(‘utf-8‘) utf-8 是指定要編碼成什麽樣的編碼類型 # print(s1.decode(‘utf-8‘)) # # bytes # b‘alex‘ # s = ‘餓了‘ # s1 = s.encode(‘gbk‘) #b‘餓了嗎‘ #b‘\xe9\xa5\xbf\xe4\xba\x86\xe5\x90\x97‘ # print(s.encode(‘gbk‘)) #b‘\xb6\xf6\xc1\xcb\xc2\xf0‘ # print(s1) # print(s1.decode(‘utf-8‘))
註意: 用什麽進行編碼就要什麽進行解碼 不然後會懵逼!
python的 == 和 is,編碼和解碼