观看麻豆影视文化有限公司-国产 高清 在线-国产 日韩 欧美 亚洲-国产 日韩 欧美 综合-日日夜夜免费精品视频-日日夜夜噜

is的意思(emphasis的意思)

  • 生活
  • 2023-04-28 12:18

可能在網(wǎng)上你經(jīng)常能看到關(guān)于這個(gè)問題的答案和解析,但是依然有很多剛開始學(xué)習(xí)Python的人,不了解這個(gè)問題,也不知道為什么問這個(gè)問題時(shí)會(huì)暴露自己是“菜鳥”,這個(gè)問題就是:

“==”和“is”之間有什么區(qū)別?

“==”和“is”都是Python中的運(yùn)算符。對(duì)于初學(xué)者,他們可能會(huì)把“a==b”解釋為“a等于b”,“aisb”也可以解釋為“a是b”。這可能就是初學(xué)者在Python中混淆“==”和“is”的原因。

在開始之前,我想先展示一些使用“==”和“is”的例子。

>>>a=5>>>b=5>>>a==bTrue>>>aisbTrue

很簡單,對(duì)吧?a==b和aisb都返回了結(jié)果True。接下來我們看另一個(gè)示例:

>>>a=1000>>>b=1000>>>a==bTrue>>>aisbFalse

WTF?!?從第一個(gè)示例到第二個(gè)示例的唯一變化就是a和b的值從5到1000。但是返回的結(jié)果在“==”和“is”已經(jīng)不同。我們?cè)倏戳硪粋€(gè)示例:

>>>a=[]>>>b=[]>>>a==bTrue>>>aisbFalse

下面是最后一個(gè)例子,看完是不是覺得自己的腦子要爆炸?

>>>a=1000>>>b=1000>>>a==bTrue>>>aisbFalse>>>a=b>>>a==bTrue>>>aisbTrue

“==”的正式運(yùn)算是相等,而“is”的運(yùn)算是標(biāo)識(shí)。一般使用“==”來比較兩個(gè)對(duì)象的值。“a==b”應(yīng)解釋為“a的值是否等于b的值”。在上述所有示例中,a的值始終等于b的值(即使對(duì)于空列表示例也是如此)。因此,“a==b”始終為真。

在解釋身份之前,我需要先介紹id函數(shù)。我們可以使用id函數(shù)獲得對(duì)象的標(biāo)識(shí)。這個(gè)身份在整個(gè)時(shí)間內(nèi)對(duì)于此對(duì)象都是唯一且恒定的。此標(biāo)識(shí)在整個(gè)時(shí)間內(nèi)對(duì)該對(duì)象是唯一且不變的。你可以把它看作是這個(gè)對(duì)象的地址。如果兩個(gè)對(duì)象具有相同的標(biāo)識(shí),則它們的值也必須相同。

>>>id(a)2047616

運(yùn)算符“is”是比較兩個(gè)對(duì)象的標(biāo)識(shí)是否相同。“aisb”的意思是“a的身份與b的身份相同”。

如果你知道“==”和“is”的實(shí)際含義,我們就可以開始研究上面的幾個(gè)示例了。

首先是第一個(gè)和第二個(gè)示例中的結(jié)果不同。顯示不同結(jié)果的原因是Python存儲(chǔ)了一個(gè)介于-5到256之間的整數(shù)的數(shù)組列表,每個(gè)整數(shù)具有固定的標(biāo)識(shí)。當(dāng)我們?cè)诖朔秶鷥?nèi)分配整數(shù)變量時(shí),Python會(huì)將此變量的標(biāo)識(shí)分配為數(shù)組列表內(nèi)整數(shù)的整數(shù)。結(jié)果,對(duì)于第一個(gè)示例,由于a和b的標(biāo)識(shí)都是從數(shù)組列表中獲得的,因此它們的標(biāo)識(shí)當(dāng)然是相同的,因此“aisb”為True。

>>>a=5>>>id(a)1450375152>>>b=5>>>id(b)1450375152

但是一旦該變量的值超出該范圍,由于Python內(nèi)部沒有具有該值的對(duì)象,因此Python將為此變量創(chuàng)建一個(gè)新的標(biāo)識(shí)并將該值分配給該變量。如前所述,身份對(duì)于每個(gè)創(chuàng)建都是唯一的,因此,即使兩個(gè)變量的值相同,其身份也永遠(yuǎn)不會(huì)相等。這就是為什么“aisb”在第二個(gè)例子結(jié)果為False。

>>>a=1000>>>id(a)12728608>>>b=1000>>>id(b)13620208

PS:如果你打開了兩個(gè)控制臺(tái),該值仍在該范圍內(nèi),那么你將獲得相同的標(biāo)識(shí)。但是,如果該值不在該范圍內(nèi),則結(jié)果就會(huì)發(fā)生改變。

如果你理解了第一示例和第二示例之間的區(qū)別,就很容易理解第三示例的結(jié)果。由于Python不存儲(chǔ)“空列表”對(duì)象,因此Python創(chuàng)建了一個(gè)新對(duì)象并分配了“空列表”值。無論兩個(gè)列表為空還是元素相同,結(jié)果都是相同的。

>>>a=[1,10,100,1000]>>>b=[1,10,100,1000]>>>a==bTrue>>>aisbFalse>>>id(a)12578024>>>id(b)12578056

接下來,我們轉(zhuǎn)到最后一個(gè)示例。第二個(gè)和最后一個(gè)示例之間的唯一區(qū)別是還有一行代碼a=b,正是這行代碼改變了變量a的命運(yùn)。以下結(jié)果將告訴你真實(shí)原因:

>>>a=1000>>>b=2000>>>id(a)2047616>>>id(b)5034992>>>a=b>>>id(a)5034992>>>id(b)5034992>>>a2000>>>b2000

如上所示,在a=b之后,a的身份更改為b的身份。a=b將b的身份分配給a。因此a和b具有相同的標(biāo)識(shí),因此a的值現(xiàn)在與b的值相同(即2000)。

最后一個(gè)示例告訴我們一個(gè)重要消息,即我們可能會(huì)無意中更改對(duì)象的值,而不會(huì)事先通知,尤其是當(dāng)對(duì)象是列表時(shí)。

>>>a=[1,2,3]>>>id(a)5237992>>>b=a>>>id(b)5237992>>>a.append(4)>>>a[1,2,3,4]>>>b[1,2,3,4]

在上面的示例中,由于a和b具有相同的標(biāo)識(shí),因此它們的值必須相同。所以,在將新元素添加到a之后,b的值也會(huì)受到影響。為避免這種情況,如果要將值從一個(gè)對(duì)象復(fù)制到另一個(gè)對(duì)象而不引用相同的標(biāo)識(shí),則所有***之一是在copy模塊中使用deepcopy。對(duì)于列表,我們還可以通過b=a[:]執(zhí)行。

>>>importcopy>>>a=[1,2,3]>>>b=copy.deepcopy(a)>>>id(a)39785256>>>id(b)5237992

使用[:]將元素復(fù)制到新變量。

>>>a=[1,2,3]>>>id(a)39785256>>>b=a[:]>>>id(b)23850216>>>a.append(4)>>>a[1,2,3,4]>>>b[1,2,3]

看完以上內(nèi)容,你是不是已經(jīng)充分了解了兩者之間的不同?如果面試遇到這種問題,千萬別回答錯(cuò)啦!

--END--

喜歡本文的同學(xué)記得轉(zhuǎn)發(fā)+點(diǎn)贊~

更多內(nèi)容,歡迎大家關(guān)注我們的公眾號(hào):為AI吶喊(weainahan)

猜你喜歡

主站蜘蛛池模板: 久久99国产亚洲高清观看首页 | 12一15女人a毛片 | 杨晨晨福利视频 | 国产国模福利视频 | 国产一区二区fc2ppv在线播放 | 成人免费一区二区三区视频软件 | 99精品视频在线免费观看 | 香蕉视频国产精品 | 欧洲免费无线码二区5 | aaa在线观看高清免费 | 99国产福利视频在线观看 | 伊人成人在线视频 | 在线亚洲欧美日韩 | 国产亚洲精品一区二区久久 | 成人午夜看片在线观看 | 一级片免费网址 | 日韩成人在线视频 | a级高清| 三级黄色免费网站 | 中文字幕乱码系列免费 | 国产美女拍拍拍在线观看 | 欧美日韩偷拍自拍 | 日本一区二区三区在线 视频 | 黄在线观看网站 | 色老头oldmoneyvideos | 日韩中文字幕在线观看视频 | 久草免费看 | 成人精品国产亚洲 | 欧美中文字幕一区 | 成人网在线视频 | 怡红院免费的全部视频 | 加勒比一本大道香蕉在线视频 | 欧美在线视频免费观看 | 收集最新中文国产中文字幕 | 国产视频中文字幕 | 亚洲人成网国产最新在线 | 欧美成人免费观看久久 | 国产乱子视频 | 中文字幕在线观看国产 | 久久精品国产99国产精品亚洲 | 窝窝女人体国产午夜视频 |