Python 對大整數的「is」運算子行為
問題
在Python 中,is 運算子檢查物件身分而不是等價性。但是,在某些情況下,此行為可能是意外的,如下所示:
<code class="python">def func(): a = 1000 b = 1000 return a is b a = 1000 b = 1000 print(a is b, func()) # (False, True)</code>
is 比較在函數內傳回 True,但在函數外傳回 False。儘管評估結果不同,整數 a 和 b 似乎具有相同的值。
解釋
要理解這種行為,Python 解釋器對程式碼區塊的解釋至關重要。根據Python參考手冊,交互執行的每個命令都構成一個單獨的程式碼區塊。以下內容視為區塊:
- 模組
- 函數體
- 類別定義
在單一程式碼區塊中,Python 快取某些對象,例如小整數(在[-5, 256] 範圍內)。當多個變數引用相同的整數文字時,它們都將引用相同的快取整數物件。但是,如果在不同的程式碼區塊中聲明文字,則會建立不同的整數物件。
不同的程式碼對象,不同的標識
為了說明這一點,請考慮每種情況的程式碼對象:
- 函數func: a 和b 引用同一個整數物件(由Python 緩存,因為1000 在快取的整數範圍內)。
- 互動式指令: a 和 b 引用不同的整數對象,因為它們是在單獨的程式碼區塊中定義的。
因此,a is b 在 func 區塊中計算為 True,其中所有整數都是緩存,並且在創建單獨物件的區塊外為 False。
注意事項
請注意以下注意事項:
- 在單行中連結賦值語句可能會導致在 True 身分檢查中。
- 由於模組的單一程式碼區塊,模組級執行將傳回 True。
- 涉及可變物件的測試將始終傳回 False,因為它們沒有被快取。
結論
理解 Python 中程式碼區塊的概念對於解釋涉及身分比較的意外行為至關重要。雖然對於檢查不可變物件的身份很有用,但建議使用相等運算子(==)來比較值,因為它不依賴快取。
以上是為什麼 Python 的「is」運算子對於不同程式碼區塊中的大整數表現不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python的靈活性體現在多範式支持和動態類型系統,易用性則源於語法簡潔和豐富的標準庫。 1.靈活性:支持面向對象、函數式和過程式編程,動態類型系統提高開發效率。 2.易用性:語法接近自然語言,標準庫涵蓋廣泛功能,簡化開發過程。

Python因其簡潔與強大而備受青睞,適用於從初學者到高級開發者的各種需求。其多功能性體現在:1)易學易用,語法簡單;2)豐富的庫和框架,如NumPy、Pandas等;3)跨平台支持,可在多種操作系統上運行;4)適合腳本和自動化任務,提升工作效率。

可以,在每天花費兩個小時的時間內學會Python。 1.制定合理的學習計劃,2.選擇合適的學習資源,3.通過實踐鞏固所學知識,這些步驟能幫助你在短時間內掌握Python。

Python適合快速開發和數據處理,而C 適合高性能和底層控制。 1)Python易用,語法簡潔,適用於數據科學和Web開發。 2)C 性能高,控制精確,常用於遊戲和系統編程。

學習Python所需時間因人而異,主要受之前的編程經驗、學習動機、學習資源和方法及學習節奏的影響。設定現實的學習目標並通過實踐項目學習效果最佳。

Python在自動化、腳本編寫和任務管理中表現出色。 1)自動化:通過標準庫如os、shutil實現文件備份。 2)腳本編寫:使用psutil庫監控系統資源。 3)任務管理:利用schedule庫調度任務。 Python的易用性和豐富庫支持使其在這些領域中成為首選工具。

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Dreamweaver Mac版
視覺化網頁開發工具