這節(jié)課我們講一下is與==的區(qū)別。
is叫做身份運(yùn)算,是用來比較左右兩個(gè)值的身份是否相等,上節(jié)課我們講了變量值的身份證號(hào),也就是id號(hào)。所以is就是用來比較兩個(gè)變量值的id號(hào)是否相等的。
這里注意了,一個(gè)等號(hào)=是賦值,兩個(gè)等號(hào)==是比較左右變量的值是否相等。
舉個(gè)例子,我們a=‘于謙’,然后b=‘于謙’。那么a和b他們兩個(gè)的id號(hào)是一樣的嗎?結(jié)果是不一樣的。但是打印出來的結(jié)果就是一樣的。
小伙伴就會(huì)問,這是為什么?這不是前后矛盾了嗎?
其實(shí)這是Pycharm的問題,我們可以用另一種方法來驗(yàn)證一下。按住win+r,輸入cmd。然后輸入Python。再把剛才在Pycharm的代碼復(fù)制上去?;剀囨I運(yùn)行,這回運(yùn)行的結(jié)果兩個(gè)id號(hào)就完全不一樣了。
我們前面說了==就是左右變量的值是否相等,所以我們輸入a==b,運(yùn)行的結(jié)果就是Ture,也就是真。
然后我們?cè)賮砜磇s,is就是用來比較兩個(gè)變量值的id號(hào)是否相等,所以我們輸入a is b,運(yùn)行的結(jié)果就是False,就是假。
所以說,只要是賦值操作,產(chǎn)生新的值的時(shí)候都會(huì)申請(qǐng)一塊內(nèi)存空間,只要申請(qǐng)了內(nèi)存新的空間,他的內(nèi)存地址就會(huì)不一樣,id也會(huì)不一樣。
注意這和我們之前講的a=‘xx’,b=a,c=b不一樣。這里是把a(bǔ)的內(nèi)存地址給了b和c,并沒有產(chǎn)生新的內(nèi)存空間。所以這里的a、b、c三個(gè)的id是一樣的。
在這里和大家總結(jié)一下,id不同的時(shí)候,值可能是相同的,因?yàn)椴煌膬?nèi)存空間是可以存相同的值的但是id相同的時(shí)候,值一定是相同的。只要是判斷出了a is b,是Ture。那么a一定是等于b的。
最后給小伙伴們留個(gè)小作業(yè),在cmd界面a=10,b=10,然后打印一下他們的id是否一致!~
未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » Python is與==的區(qū)別