ExpertiDict

Python · Avançado · Inglês · Técnico

interning

/ˈɪntɝnɪŋ/substantivo

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))  # True

Exemplos

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.

Veja também

Todos os termos de Python