麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  應聘面試  >  Python面試題  > 假設你使用的是官方的CPython,說出下面代碼的運行結果

假設你使用的是官方的CPython,說出下面代碼的運行結果

來源:千鋒教育
發布人:wjy
時間: 2022-08-22 16:16:00 1661156160

點評:下面的程序對實際開發并沒有什么意義,但卻是CPython中的一個大坑,這道題旨在考察面試者對官方的Python解釋器到底了解到什么程度。

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() 

 結果: True False True False True 

上面代碼中 a is b的結果是True但c is d的結果是False,這一點的確讓人費解。這個結果是因為CPython出于性能優化的考慮,把頻繁使用的整數對象用一個叫small_ints的對象池緩存起來造成的。

small_ints緩存的整數值被設定為[-5, 256]這個區間,也就是說,如果使用CPython解釋器,在任何引用這些整數的地方,都不需要重新創建int對象,而是直接引用緩存池中的對象。

如果整數不在該范圍內,那么即便兩個整數的值相同,它們也是不同的對象。

CPython底層為了進一步提升性能還做了一個設定:對于同一個代碼塊中值不在small_ints緩存范圍之內的整數,如果同一個代碼塊中已經存在一個值與其相同的整數對象,那么就直接引用該對象,否則創建新的int對象。

需要大家注意的是,這條規則對數值型適用,但對字符串則需要考慮字符串的長度,這一點可以自行證明。

擴展:如果你用PyPy(另一種Python解釋器實現,支持JIT,對CPython的缺點進行了改良,在性能上優于CPython,但對三方庫的支持略差)來運行上面的代碼,你會發現所有的輸出都是True。

CPython代碼的運行結果

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 欧美在线播放| 久久66久这里精品99| 婷婷亚洲久悠悠色悠在线播放 | 福利一区二区三区视频在线观看| 亚洲春黄在线观看| 丰满妇女做a级毛片免费观看| 免费大片av手机看片| 日本精a在线观看| 波多野结衣护士无删减| 欧美精品亚洲精品日韩专区| 欧美日韩电影在线观看| 日韩三级黄色| 国产一精品一av一免费爽爽| 久久香蕉综合色一综合色88| 亚洲a∨精品一区二区三区下载| 一本热久久sm色国产| 第四色最新网站| 欧美一级在线观看| 国产精品久久久久久福利| 免费啪啪社区免费啪啪手机版| 又大又硬又爽免费视频| 欧美一区二区三区久久综合| 国产亚洲人成网站在线观看| 久久综合狠狠综合久久综合88| 天堂√在线中文最新版| 国产卡1卡2卡三卡在线| 中国老太大bbw| 老司机福利在线观看| 免费看美女脱衣服| 欧美午夜成年片在线观看| 日本欧美日韩| 日产亚洲一区二区三区| 特级大片| 羞羞漫画小舞被黄漫免费| 大象视频在线免费观看| 久久精品日日躁精品| 爱搞搞视频| 欧美黑人巨大videos在线| 91在线麻豆| 国产三级在线观看免费| 国产精品美女久久久久|