'is'運算符與非緩存整數意外地運行在玩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()的參與對象,這意味著a并b指向同一個int函數內聲明的時候實例func,但是,相反,它們指向一個不同的對象時,它的外面。為什么會這樣?注意:我知道identity(is)和equal(==)操作之間的區別,如了解Python的“is”操作符中所述。另外,我也知道python正在對范圍內的整數執行緩存,[-5, 256]如“is”中所述,運算符與整數一起出現意外行為。 這不是這里的情況,因為數字超出了該范圍,我確實想要評估身份而不是平等。
- 2 回答
- 0 關注
- 775 瀏覽
添加回答
舉報
0/150
提交
取消