巨蟒python全棧開發-第6天 is&==

1.小數據池java

2.idpython

3.decode和encode數據庫

 

小數據池緩存

#小數據池:不要死磕就行
#python爲了簡化,搞出來的一個東西


ID

(1)
# id()函數能夠幫咱們查看一個變量的內存地址
# a=10
# b=30
# c=10
# print(id(a)) #1712876864
# print(id(b)) #1712877504
# print(id(c)) #1712876864

(2)
# lst=['周杰倫','麻花藤']
# print(id(lst)) #1248606696968
# lst.append('胡辣湯')
# print(id(lst)) #1248606696968

#你哥仍是你哥,你的包仍是你的包
#在這個過程當中,始終仍是那個那個包
(3)
# lst=['周杰倫','麻花藤']
# print(id(lst)) #2415882876424
# lst=[] #從新定義一個列表
# lst.append('胡辣湯')
# print(id(lst)) #2415882876296
#
(4)#兩個對象的內存地址是不同的
'''
lst1=[1,2,3]
lst2=[1,2,3]
print(id(lst1)) #1845106652680
print(id(lst2)) #1845106652552
'''
(5)#python&java等等最慢的事情是:建立對象 做用:顯著提升程序的運行效率
#隨着時間的提高,內存會不斷被消耗
'''
s1='abc' #內存中是沒有'abc,建立一個新的 0.001
s2='abc' #內存中已經有了'abc',直接把abc拿來用 0.00000001
print(id(s1),id(s2)) #1351674474712 1351674474712
'''
#程序中出現最高的數據類型:字符串,爲了可以快速的建立字符串
#節省內存,把相同的規律的字符串進行緩存,當下次建立的時候就再也不建立了
#把字符串的緩存 ->小數據池->String iterning ->常量池->字符串緩存

#其餘語言:常量池,字符串緩存

#在建立字符串以前,先去小數據池對比,是否已經存在了該字符串,若是存在了.
#就不建立新的了,直接拿原來存在的數據,省略掉反覆重複建立字符串的過程,節省內存

(6)#小數據池只針對:數字,字符串,布爾值
# 什麼數據會被緩存?
#數字,字符串,布爾值=》 都是不可變的數據類型(由於他會被不少人使用)
#有緩存和駐留機制

#基本數據類型:int bool str list tuple dic set

1.#數字
'''
a=1000
b=1000
print(id(a),id(b)) #2811993566928 2811993566928
'''
#在CMD顯示不同 -5-256
#在pycharm是顯示同樣的

2.#字符串,若是單純的寫字符串,幾乎都會被緩存
'''
s1='alex昨天上廁所沒關門,韓紅衝進去了,風扇個出來了,alex昨天上廁所沒關門,韓紅衝進去了,風扇個出來了'
s2='alex昨天上廁所沒關門,韓紅衝進去了,風扇個出來了,alex昨天上廁所沒關門,韓紅衝進去了,風扇個出來了'
print(id(s1),id(s2)) #2793562660912 2793562660912
'''
'''
若是在py文件中寫的字符串,幾乎都是緩存的
在黑窗口裏寫的幾乎都不會緩存
#不一樣的解釋器,緩存的機制也不同

# 優勢:能夠幫助咱們快速的建立對象,節省內存
# 缺點:緩存若是過大,響應速度會比較慢
#可是咱們 "不要糾結"
'''

# ==和 is
'''
硬盤: 80MB/S(數據庫)
內存: 緩衝的做用 2G/S
CPU: 3Ghz (應用)

#內存很滿很滿時,會直接找硬盤,也就是硬盤中的內存機制

#百萬併發:90萬人在等待
#中間機制:中間加上緩存,如今的就是緩存

#短時間內不改的,就放在小數據池內,京東的頁面
#天天緩存一份,可是價格不緩存
'''

(7)#==(判斷內容)和 is(判斷內存地址) 的區別
#== 比較的是數據,外貌
#is 比較的是內存地址,比較身份證號

'''
lst1=[1,2,3]
lst2=[1,2,3]
#列表沒有小數據池
print(id(lst1),id(lst2)) #2231123785096 2231123785224#而且每次的運行結果都不同
print(lst1==lst2) #True
print(lst1 is lst2) #False

s1='我叫周潤發'
s2='我叫周潤發'
print(s1==s2) #True
#print(s1 is s2) #True #小數據池

tu1=('週一','週二')
tu2=('週一','週二')
print(tu1 is tu2) #False 內存地址不相同
print(tu1 == tu2) #True 內容同樣
'''


3.decode和encode

(1)'''s='我今天很是的困'bs=s.encode('utf-8')    #把字符串轉化成utf-8格式bytesprint(bs)#bytes不是給人看的,給機器用的#21個字節# b'\xe6\x88\x91\xe4\xbb\x8a\xe5\xa4\xa9\xe9\x9d\x9e\xe5\xb8\xb8\xe7\x9a\x84\xe5\x9b\xb0'bs=s.encode('gbk')    #把字符串轉化成utf-8格式bytesprint(bs)#b'\xce\xd2\xbd\xf1\xcc\xec\xb7\xc7\xb3\xa3\xb5\xc4\xc0\xa7'#utf-8和gbk是不能直接轉換的,必須使用unicode來轉換'''(2)'''bs=b'\xce\xd2\xbd\xf1\xcc\xec\xb7\xc7\xb3\xa3\xb5\xc4\xc0\xa7's=bs.decode('gbk')print(s)sb = b'\xe6\x88\x91\xe4\xbb\x8a\xe5\xa4\xa9\xe9\x9d\x9e\xe5\xb8\xb8\xe7\x9a\x84\xe5\x9b\xb0's=sb.decode('utf-8')print(s)#爬蟲中,在網站上,有的用的是GBK,有的就是utf-8'''#練習'''sb = b'\xe6\x88\x91\xe4\xbb\x8a\xe5\xa4\xa9\xe9\x9d\x9e\xe5\xb8\xb8\xe7\x9a\x84\xe5\x9b\xb0'gb=sb.decode('utf-8')   #解碼gbk_1=gb.encode('gbk')  #編碼print(gbk_1)'''# 關於bytes,非ascii中的內容,展現的是\x..,若是是ascii中的內容,原樣輸出# name='alex昨天吃多了'# bs=name.encode('gbk')# print(bs)name='alex昨天吃多了'bs=name.encode('GBK')print(bs)
相關文章
相關標籤/搜索