Python · Avançado · Inglês · Técnico
interning
Otimização do CPython que reaproveita um único objeto para certos valores imutáveis, como inteiros pequenos e strings parecidas com identificadores. sys.intern força isso para strings.
Onde usar
Explica por que a is b dá True com números pequenos e False com grandes, e ajuda a poupar memória e acelerar comparações com milhões de chaves repetidas. Nunca se deve depender disso para a lógica do programa.
Em código
import sys
a = 'x' * 50 + str(1)
b = 'x' * 50 + str(1)
print(a is b) # False (objetos distintos)
print(sys.intern(a) is sys.intern(b)) # TrueExemplos
Interning is why small integers share the same object.
É por causa do interning que inteiros pequenos compartilham o mesmo objeto.
Call sys.intern on the keys to save memory.
Chame sys.intern nas chaves para economizar memória.
Cuidado
Não use is para comparar valores achando que o interning é garantido; é detalhe de implementação e varia entre versões.