ExpertiDict

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

hash randomization

/hæʃ ˌɹændəmaɪˈzeɪʃən/substantivo

Mecanismo que sorteia a semente do hash de str e bytes a cada execução, para dificultar ataques de colisão. Por isso a ordem de um set de strings varia.

Onde usar

Explica testes que passam num dia e falham no outro porque dependem da ordem de um set. Em code review, o pedido é ordenar antes de comparar, ou fixar PYTHONHASHSEED só para depurar.

Em código

print(hash('ola'))  # muda a cada execução
print({'a', 'b', 'c'})  # ordem varia
# PYTHONHASHSEED=0 python app.py
# fixa a semente (só para depurar)

Exemplos

That test depends on set order, hash randomization breaks it.

Esse teste depende da ordem do set, a hash randomization o quebra.

Set PYTHONHASHSEED to reproduce the failure.

Defina PYTHONHASHSEED para reproduzir a falha.

Cuidado

Não use hash() de strings como identificador persistente: o valor muda entre execuções; use hashlib quando precisar de algo estável.

Sinônimos

PYTHONHASHSEED

Veja também

Todos os termos de Python