本篇內(nèi)容介紹了“官方的Python解釋器怎么使用”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)的開發(fā),更需要了解用戶,從用戶角度來建設(shè)網(wǎng)站,獲得較好的用戶體驗(yàn)。創(chuàng)新互聯(lián)多年互聯(lián)網(wǎng)經(jīng)驗(yàn),見的多,溝通容易、能幫助客戶提出的運(yùn)營(yíng)建議。作為成都一家網(wǎng)絡(luò)公司,打造的就是網(wǎng)站建設(shè)產(chǎn)品直銷的概念。選擇創(chuàng)新互聯(lián),不只是建站,我們把建站作為產(chǎn)品,不斷的更新、完善,讓每位來訪用戶感受到浩方產(chǎn)品的價(jià)值服務(wù)。
a, b, c, d = 1, 1, 1000, 1000 print(a is b, c is d) def foo(): e = 1000 f = 1000 print(e is f, e is d) g = 1 print(g is a) foo()
運(yùn)行結(jié)果:
True False True False True
上面代碼中a is b
的結(jié)果是True
但c is d
的結(jié)果是False
,這一點(diǎn)的確讓人費(fèi)解。CPython解釋器出于性能優(yōu)化的考慮,把頻繁使用的整數(shù)對(duì)象用一個(gè)叫small_ints
的對(duì)象池緩存起來造成的。small_ints
緩存的整數(shù)值被設(shè)定為[-5, 256]
這個(gè)區(qū)間,也就是說,在任何引用這些整數(shù)的地方,都不需要重新創(chuàng)建int
對(duì)象,而是直接引用緩存池中的對(duì)象。如果整數(shù)不在該范圍內(nèi),那么即便兩個(gè)整數(shù)的值相同,它們也是不同的對(duì)象。
CPython底層為了進(jìn)一步提升性能還做了另一個(gè)設(shè)定,對(duì)于同一個(gè)代碼塊中值不在small_ints
緩存范圍內(nèi)的整數(shù),如果同一個(gè)代碼塊中已經(jīng)存在一個(gè)值與其相同的整數(shù)對(duì)象,那么就直接引用該對(duì)象,否則創(chuàng)建新的int
對(duì)象。需要大家注意的是,這條規(guī)則對(duì)數(shù)值型適用,但對(duì)字符串則需要考慮字符串的長(zhǎng)度,這一點(diǎn)大家可以自行證明。
擴(kuò)展:如果你用PyPy(另一種Python解釋器實(shí)現(xiàn),支持JIT,對(duì)CPython的缺點(diǎn)進(jìn)行了改良,在性能上優(yōu)于CPython,但對(duì)三方庫的支持略差)來運(yùn)行上面的代碼,你會(huì)發(fā)現(xiàn)所有的輸出都是True。
“官方的Python解釋器怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!