Dies ist Interpreter abhängig (d. H. Es gibt keine Spezifikationen, die solche Zwischenspeicherung erfordern). Aber soweit ich weiß, hat der python
Interpreter einen Cache für ganze Zahlen bis einschließlich . Darüber hinaus werden Werte bis einschließlich -5 zwischengespeichert. So ist der Bereich -5 bis 256 (beide eingeschlossen), wie in der schriftlichen documentation:
Die aktuelle Implementierung eines Arrays von ganzzahligen Objekte für alle ganzen Zahlen zwischen -5 und 256 (..) hält
Sie also besser nie Referenz verwenden Gleichheit zu prüfen, ob zwei Zahlen gleich sind, immer ==
verwenden. Dies ist auch nützlich, wenn Sie zum Beispiel einen int
mit einem numpy int16
vergleichen würden. Wenn Sie Referenzprüfungen verwenden, schlägt Folgendes fehl:
>>> np.int16(12) is 12
False
>>> np.int16(12) == 12
True
Das klingt wie die Art von Problem, das ein Programm lösen sollte ... –