Problemas relacionados con el grupo de objetos estáticos de números enteros pequeños

Sobre el problema

  • Los objetos enteros son objetos inmutables y el resultado de las operaciones con enteros se devuelve como un objeto nuevo, pero:
>>> a = 1 + 0
>>> b = 1 * 1
>>> id(a), id(b)
(4408209536, 4408209536)

>>> c = 1000 + 0
>>> d = 1000 * 1
>>> id(c), id(d)
(4410298224, 4410298160)

El grupo de enteros pequeños de Python crea objetos con números comunes de -5 a 256 de forma predeterminada

  • Dado que el resultado del cálculo de 1 + 0 es 1, en el rango de números enteros pequeños, Python obtiene directamente el número entero 1 del grupo de objetos estáticos; 1 * 1 es lo mismo. Los nombres ayb están realmente vinculados al mismo objeto, es decir, el entero 1 en el grupo de objetos de enteros pequeños, por lo que el id es el mismo

  • Los resultados del cálculo de 1000 + 0 y 1000 * 1 son ambos 1000, pero dado que 1000 no está en el rango de números enteros pequeños, Python crea objetos por separado, por lo que los identificadores de objeto de cyd son diferentes

Supongo que te gusta

Origin blog.csdn.net/pythonstrat/article/details/108291092
Recomendado
Clasificación