欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Python整數(shù)問題怎么理解

本篇內(nèi)容主要講解“Python整數(shù)問題怎么理解”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Python整數(shù)問題怎么理解”吧!

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的富民網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

在 Python 中一切都是對(duì)象,毫無例外整數(shù)也是對(duì)象,對(duì)象之間比較是否相等可以用==,也可以用is。==和is操作的區(qū)別是:

  • is比較的是兩個(gè)對(duì)象的id值是否相等,也就是比較倆對(duì)象是否為同一個(gè)實(shí)例對(duì)象,是否指向同一個(gè)內(nèi)存地址。

  • ==比較的是兩個(gè)對(duì)象的內(nèi)容是否相等,默認(rèn)會(huì)調(diào)用對(duì)象的__eq__()方法。

清楚is和==的區(qū)別之后,對(duì)此也許你有可能會(huì)遇到下面的這些困惑,我們先來看兩段代碼:

片段一:

>>> a = 256  >>> b = 256  >>> a == b  True  >>>

片段二:

>>> a = 256  >>> b = 256  >>> a is b  True  >>>

在交互式命令行執(zhí)行上面兩段代碼,代碼片段一中的a==b返回True很好理解,因?yàn)閮蓚€(gè)對(duì)象的值都是256,對(duì)于片段二,a is  b也返回True,這說明a和b是指向同一個(gè)對(duì)象的,可以檢查一下他們的id值是否相等:

>>> id(a)  8213296  >>> id(b)  8213296  >>>

結(jié)果證明他倆的確是同一個(gè)對(duì)象,指向的是同一個(gè)內(nèi)存地址。那是不是所有的整數(shù)對(duì)象只要兩個(gè)對(duì)象的值(內(nèi)容)相等,它們就是同一個(gè)實(shí)例對(duì)象呢?換句話說,對(duì)于整數(shù)對(duì)象只要==返回True,is操作也會(huì)返回True嗎?帶著這個(gè)問題來看下面這兩段代碼:

片段一:

>>> a = 257  >>> b = 257  >>> a == b  True  >>>

片段二:

>>> a = 257  >>> b = 257  >>> a is b  False  >>>

對(duì)于257,a is b返回的竟然是False,結(jié)果可能在你的意料之中,也有可能出乎你的意料,但不管怎么,我們還是要刨根問底,找出問題的真相。

解惑一

出于對(duì)性能的考慮,Python內(nèi)部做了很多的優(yōu)化工作,對(duì)于整數(shù)對(duì)象,Python把一些頻繁使用的整數(shù)對(duì)象緩存起來,保存到一個(gè)叫small_ints的鏈表中,在Python的整個(gè)生命周期內(nèi),任何需要引用這些整數(shù)對(duì)象的地方,都不再重新創(chuàng)建新的對(duì)象,而是直接引用緩存中的對(duì)象。Python把這些可能頻繁使用的整數(shù)對(duì)象規(guī)定在范圍[-5,  256]之間的小對(duì)象放在small_ints中,但凡是需要用些小整數(shù)時(shí),就從這里面取,不再去臨時(shí)創(chuàng)建新的對(duì)象。因?yàn)?57不再小整數(shù)范圍內(nèi),因此盡管a和b的值是一樣,但是他們?cè)赑ython內(nèi)部卻是以兩個(gè)獨(dú)立的對(duì)象存在的,各自為政,互不干涉。

弄明白***個(gè)問題后,我們繼續(xù)在Python交互式命令行中寫一個(gè)函數(shù),再來看下面這段代碼:

片段一:

>>> c = 257  >>> def foo():  ... a = 257  ... b = 257  ... print a is b  ... print a is c  ...  >>> foo()  True  False

呃,什么情況,是的,你沒看錯(cuò),片段一中的這段代碼 a、b 值都是257的情況下,出現(xiàn)了a is b返回True,而a is c  返回的False,a、b、c的值都為257,為什么會(huì)出現(xiàn)不同的結(jié)果呢?這對(duì)于剛剛好不容易建立起來的認(rèn)知就被徹底否決了嗎,那這段代碼中究竟發(fā)生了什么?難道解惑一中的結(jié)論是錯(cuò)誤的嗎?

解惑二

為了弄清楚這個(gè)問題,我們有必要先理解程序代碼塊的概念。Python程序由代碼塊構(gòu)成,代碼塊作為程序的一個(gè)最小基本單位來執(zhí)行。一個(gè)模塊文件、一個(gè)函數(shù)體、一個(gè)類、交互式命令中的單行代碼都叫做一個(gè)代碼塊。在上面這段代碼中,由兩個(gè)代碼塊構(gòu)成,c  =  257作為一個(gè)代碼塊,函數(shù)foo作為另外一個(gè)代碼塊。Python內(nèi)部為了將性能進(jìn)一步的提高,凡是在一個(gè)代碼塊中創(chuàng)建的整數(shù)對(duì)象,如果存在一個(gè)值與其相同的對(duì)象于該代碼塊中了,那么就直接引用,否則創(chuàng)建一個(gè)新的對(duì)象出來。Python出于對(duì)性能的考慮,但凡是不可變對(duì)象,在同一個(gè)代碼塊中的對(duì)象,只有是值相同的對(duì)象,就不會(huì)重復(fù)創(chuàng)建,而是直接引用已經(jīng)存在的對(duì)象。因此,不僅是整數(shù)對(duì)象,還有字符串對(duì)象也遵循同樣的原則。所以  a is  b就理所當(dāng)然的返回True了,而c和a不在同一個(gè)代碼塊中,因此在Python內(nèi)部創(chuàng)建了兩個(gè)值都是257的對(duì)象。為了驗(yàn)證剛剛的結(jié)論,我們可以借用dis模塊從字節(jié)碼的角度來看看這段代碼。

>>> import dis  >>> dis.dis(foo)    2           0 LOAD_CONST               1 (257)                3 STORE_FAST               0 (a)       3           6 LOAD_CONST               1 (257)                9 STORE_FAST               1 (b)       4          12 LOAD_FAST                0 (a)               15 LOAD_FAST                1 (b)               18 COMPARE_OP               8 (is)               21 PRINT_ITEM                         22 PRINT_NEWLINE             5          23 LOAD_FAST                0 (a)               26 LOAD_GLOBAL              0 (c)               29 COMPARE_OP               8 (is)               32 PRINT_ITEM                         33 PRINT_NEWLINE                     34 LOAD_CONST               0 (None)               37 RETURN_VALUE

可以看出兩個(gè)257都是從常量池的同一個(gè)位置co_consts[1]獲取的。

到此,相信大家對(duì)“Python整數(shù)問題怎么理解”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

本文題目:Python整數(shù)問題怎么理解
文章起源:http://aaarwkj.com/article30/jjpiso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、企業(yè)建站、網(wǎng)站導(dǎo)航、標(biāo)簽優(yōu)化品牌網(wǎng)站設(shè)計(jì)、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司
欧亚日韩精品一区二区在线| 国家成人午夜在线观看| 亚洲视频一区视频二区| 国产一区二区成人精品| 午夜福利影片免费观看| 色欧美一区二区三区在线| 欧美日韩亚洲激情一区| 18禁免费无遮挡免费视频| 狠狠躁夜夜躁人人爽蜜桃| 中文字幕乱码亚洲中文在线| 中文字幕一区二区精品区| 亚洲最大av在线精品国产| 97门久欧美日韩久久| 国产又大又长又粗又硬又猛| 视频一区欧美日韩精品| 欧美日韩国产激情高清| 91av国产一区二区| 91人妻人澡人人爽| 日韩在线不卡中文字幕| 欧美精品日韩中文字幕在| 国产精品一区二区久久| 男女生做刺激性视频网站| 日韩精品第一区第二区| 精品黄色大片不卡国产| 国产日韩精品综合一区| 亚洲欧美日韩国产成人精品| 91午夜福利偷拍视频| 亚洲国产成人精品av在线| 色哟哟视频在线免费观看| 欧美熟女av在线观看| 日韩毛片中文字幕在线观看| 91人妻人澡人人爽| 日韩精品国产一区二区在线观看| 中文字幕久久亚洲一区| 欧美一区二区三区久久束缚| 国产91香蕉在线精品| 成人性生交免大片免费| 国产精品一级片免费看| 亚洲国产精品福利在线| 中文字幕日韩在线欧美一区| 在线日韩观看免费av|