在嘗試使用Python 解釋器時,注意到一個關於'是'運算符。具體來說,「is」在函數內求值時傳回True,但在函數外部求值時傳回False:
>>> def func(): ... a = 1000 ... b = 1000 ... return a is b ... >>> a = 1000 >>> b = 1000 >>> a is b, func() (False, True)
由於「is」計算物件的「id」,這表示在「func」函數內, 'a' 和'b' 指的是同一個int 實例。然而,在函數之外,它們引用不同的物件。為什麼會這樣呢?
Python 參考手冊提供了深刻的說明:
「區塊是作為一個單元執行的一段Python 程式文字」互動輸入的每個指令都是一個塊。 ”
在一個函數中,存在一個代碼塊,僅包含數字1000 的一個對象。因此,“id(a)”和“id(b)”返回相同的值,從而得到True 評估。
在函數之外,我們有兩個單獨的程式碼對象,每個對象的對象為1000。不同,導致錯誤評估。 );相反,應該使用相等運算符('==')。 🎜>
在'func' 函數中:
我們有一個1000 的'int' 實例,它被分配給'a' 和'b'。 🎜>
在'func'函數之外:我們看到每個程式碼物件都有其實例1000,導致計算結果為False。 >此觀察結果適用於CPython,這是最廣泛使用的Python實作。不建議對可變物件使用“is”進行身份檢查,因為它們將始終評估為False。
以上是為什麼「is」運算子對於 Python 中函數內部和外部的非快取整數的行為不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!