Je comprends que python économisera avec certains types immuables en pointant vers le même objet en mémoire pour deux objets équivalents. Tels que la déclaration des variables au même nombre (dans les limites de -5 et 256):Les tuples identiques non modifiables pointent vers différents objets
i = 5
j = 5
i is j
>> True
... et ensembles:
tuple1 =()
tuple2 =()
tuple1 == tuple2
>> True
tuple1 is tuple2
>> True
ensembles Parce que (type immuable) peuvent contenir des types mutables tels sous forme de listes qui peuvent être modifiés, je comprends que Python ne voudrais pas pointer vers le même objet que dans le cas:
tuple3 = ([1, 2, 3], a, b)
tuple4 = ([1, 2, 3], a, b)
tuple3 is tuple4
>> False
... Comment viennent les tuples suivants ne pointent pas vers le même objet que t Ils sont tous les deux, à ma connaissance, immuables dans toutes les conditions?
tuple5 = ((),())
tuple6 = ((),())
tuple5 == tuple6
>> True
tuple5 is tuple6
>> False
Il est généralement inutile de chercher les raisons pour lesquelles une implémentation particulière a été faite d'une certaine manière, surtout quand on souligne que les détails peuvent varier dans le temps et dans l'implémentation, comme c'est le cas ici. Nous n'avons pas accès aux réunions de programmeurs où de telles décisions sont prises, et la fabrication de la saucisse n'est pas toujours jolie. –
Vous parlez de tuples, pas d'ensembles. – chepner