'is'運(yùn)算符與非緩存整數(shù)意外地運(yùn)行在玩Python解釋器時,我偶然發(fā)現(xiàn)了關(guān)于is運(yùn)算符的這個沖突的情況:如果評估發(fā)生在它返回的函數(shù)中True,如果它在外部完成則返回False。>>> def func():... a = 1000... b = 1000... return a is b...>>> a = 1000>>> b = 1000>>> a is b, func()(False, True)由于is運(yùn)營商評估id()的參與對象,這意味著a并b指向同一個int函數(shù)內(nèi)聲明的時候?qū)嵗齠unc,但是,相反,它們指向一個不同的對象時,它的外面。為什么會這樣?注意:我知道identity(is)和equal(==)操作之間的區(qū)別,如了解Python的“is”操作符中所述。另外,我也知道python正在對范圍內(nèi)的整數(shù)執(zhí)行緩存,[-5, 256]如“is”中所述,運(yùn)算符與整數(shù)一起出現(xiàn)意外行為。 這不是這里的情況,因為數(shù)字超出了該范圍,我確實(shí)想要評估身份而不是平等。
添加回答
舉報
0/150
提交
取消