1. 程式人生 > >python的 == 和 is,編碼和解碼

python的 == 和 is,編碼和解碼

傳輸 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,編碼和解碼