Python的in,is和id函數(shù)代碼實(shí)例
1. in 和 not in —— 判斷某個(gè)序列中是否存在某值
# in aa = [1,2,3,'Cathy','太平洋'] if '大西洋' in aa: print('yes') else: print('no') # no # not in if '大西洋' not in aa: print('yes') # yes else: print('no') #------------------------------------------------------- # 判斷字符串是否存在某子串 if '馬來(lái)西亞' in '馬來(lái)西亞是一個(gè)太平洋國(guó)家': print('of course') # 輸出 'of course' # ------------------------------------------------------ if 0 in (0,1,2,3): print('hhhh') #輸出 'hhhh' if 0 in [0,1,2,3]: print('kkkk') #輸出 'hhhh'
2. is 和 is not —— 判斷兩個(gè)標(biāo)識(shí)符是不是指向同一個(gè)地址(同一個(gè)對(duì)象),類似于判斷 id(x) == id(y) —— 具體對(duì)于相同值的內(nèi)存管理
# 相同 bb = 234 cc = 234 if bb is cc: print('bb is cc') #結(jié)果是 bb is cc else: print('bb is not cc') print(id(bb)) # id()值一樣,因?yàn)閜ython的優(yōu)化機(jī)制,相同的'數(shù)值'數(shù)據(jù)會(huì)使用同樣的內(nèi)存空間。 print(id(cc)) # 相同 bb = 'hhh' cc = 'hhh' if bb is cc: print('bb is cc') #同樣也是因?yàn)閜ython的自身機(jī)制,在某些'字符'位數(shù)下,相同字符串也會(huì)指向同一地址 ------ 有說(shuō)20位的,與系統(tǒng)有關(guān) else: print('bb is not cc')# 相同,python的對(duì)象引用機(jī)制 bb = [1,2,3] cc = bb if bb is cc: print('bb is cc') #結(jié)果是 bb is cc else: print('bb is not cc') # 不相同 bb = [1,2,3] cc = [1,2,3] if bb is cc: print('bb is cc') else: print('bb is not cc') #結(jié)果是 bb is not cc print(id(bb)) # id()值不一樣 print(id(cc))
3. id() 函數(shù),獲取對(duì)象的內(nèi)存地址(不同電腦不一樣),例如:
bb = 'hhh' cc = bb if bb is cc: print('bb is cc') #結(jié)果是 bb is cc else: print('bb is not cc') print(id(bb)) # id()值一樣,均為 1680346901336 print(id(cc))
4. 可變數(shù)據(jù)類型和不可變數(shù)據(jù)類型
不可變數(shù)據(jù)類型: 當(dāng)該類型的變量值發(fā)生了改變,它對(duì)應(yīng)的內(nèi)存地址也會(huì)發(fā)生改變。
可變數(shù)據(jù)類型 :當(dāng)該類型的變量值發(fā)生了改變,它對(duì)應(yīng)的內(nèi)存地址不發(fā)生改變。
這里的可變不可變,是指內(nèi)存中的值內(nèi)容(value)是否可以被改變。如果是不可變類型,在操作對(duì)象本身的時(shí)候,必須在內(nèi)存新申請(qǐng)一塊內(nèi)存(因?yàn)樵瓋?nèi)存內(nèi)容是不可變的)。如果是可變類型,操作對(duì)象的時(shí)候,不需要再在其他地方申請(qǐng)內(nèi)存,只需要在此對(duì)象后面連續(xù)申請(qǐng)內(nèi)存,所以它的地址會(huì)保持不變,但該內(nèi)存區(qū)域大小會(huì)變化。
在python中:
int,string,float,tuple —— 屬于python的不可變類型
object、list、set —— 屬于python的可變類型
使用:可以使用內(nèi)建函數(shù)id()來(lái)確認(rèn)對(duì)象的地址在兩次賦值前后是否發(fā)生了變化。
例如:分別對(duì)于數(shù)值和列表類型:
a = 1 print(id(a)) a = a+1 #a本身發(fā)生變化 print(id(a)) # 結(jié)果分別為:140732932812544 和 140732932812576,表示id值發(fā)生了變化 a = ['1'] print(id(a)) a.append('sss') #a本身發(fā)生變化 print(id(a)) print(a) # 輸出:['1', 'sss'] # 結(jié)果分別為:1680347029768 和 1680347029768,表示id值沒(méi)有變化
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python用字典統(tǒng)計(jì)單詞或漢字詞個(gè)數(shù)示例
這篇文章主要介紹了python用字典統(tǒng)計(jì)單詞或漢字詞個(gè)數(shù)示例,需要的朋友可以參考下2014-04-04python爬蟲開發(fā)之selenium模塊詳細(xì)使用方法與實(shí)例全解
這篇文章主要介紹了python爬蟲開發(fā)之selenium模塊詳細(xì)使用方法與實(shí)例全解,selenium模塊詳細(xì)在爬蟲開發(fā)中主要用來(lái)解決JavaScript渲染問(wèn)題需要的朋友可以參考下2020-03-03python 實(shí)現(xiàn)目錄復(fù)制的三種小結(jié)
今天小編就為大家分享一篇python 實(shí)現(xiàn)目錄復(fù)制的三種小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12Python中裝飾器兼容加括號(hào)和不加括號(hào)的寫法詳解
這篇文章主要給大家介紹了關(guān)于Python中裝飾器兼容加括號(hào)和不加括號(hào)寫法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-07-07Python繪圖之自定義圖類型控件實(shí)現(xiàn)混合類型圖表
這篇文章主要為大家詳細(xì)介紹了Python如何新建繪圖類型控件,實(shí)現(xiàn)混合類型圖表,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-08-08python數(shù)據(jù)可視化之matplotlib.pyplot基礎(chǔ)以及折線圖
不論是數(shù)據(jù)挖掘還是數(shù)據(jù)建模,都免不了數(shù)據(jù)可視化的問(wèn)題,對(duì)于Python來(lái)說(shuō),Matplotlib是最著名的繪圖庫(kù),它主要用于二維繪圖,這篇文章主要給大家介紹了關(guān)于python數(shù)據(jù)可視化之matplotlib.pyplot基礎(chǔ)以及折線圖的相關(guān)資料,需要的朋友可以參考下2021-07-07Python tkinter布局與按鈕間距設(shè)置方式
這篇文章主要介紹了Python tkinter布局與按鈕間距設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03python3代碼輸出嵌套式對(duì)象實(shí)例詳解
在本篇文章里小編給大家整理了關(guān)于python3代碼輸出嵌套式對(duì)象實(shí)例詳解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2020-12-12