Un concetto precedente ha trattato il modulo random, che produce numeri pseudo-casuali e ordinamenti pseudo-casuali di liste.
Il modulo secrets si sovrappone a random in alcune delle sue funzionalità, ma i due moduli sono progettati con priorità molto diverse.
random è ottimizzato per prestazioni elevate nella modellazione e nella simulazione, con una generazione di numeri pseudo-casuali «abbastanza buona».secrets è progettato per essere crittograficamente sicuro per applicazioni come l'hashing delle password, la generazione di token di sicurezza e l'autenticazione degli account.Ulteriori dettagli sul perché l'aggiunta del modulo secrets si sia resa necessaria sono forniti in PEP 506.
Il modulo secrets è relativamente piccolo e semplice, con metodi per generare numeri interi casuali, bit, byte, token o una voce casuale da una sequenza data.
Per usare secrets, devi prima importarlo con import:
>>> import secrets
# Returns n, where 0 <= n < 1000.
>>> secrets.randbelow(1000)
577
# 32-bit integers.
>>> secrets.randbits(32)
3028709440
>>> bin(secrets.randbits(32))
'0b11111000101100101111110011110100'
# Pick at random from a sequence.
>>> secrets.choice(['my', 'secret', 'thing'])
'thing'
# Generate a token made up of random hexadecimal digits.
>>> secrets.token_hex()
'f683d093ea9aa1f2607497c837cf11d7afaefa903c5805f94b64f068e2b9e621'
# Generate a URL-safe token of random alphanumeric characters.
>>> secrets.token_urlsafe(16)
'gkSUKRdiPDHqmImPi2HMnw'
Se stai scrivendo applicazioni sensibili alla sicurezza, ti conviene sicuramente leggere la documentazione completa, che offre ulteriori consigli ed esempi.