Ein vorheriges Konzept hat das Modul random behandelt, das pseudozufällige Zahlen und pseudozufällige Reihenfolgen von Listen erzeugt.
Das Modul secrets überschneidet sich in einigen Funktionen mit random, aber die beiden Module wurden mit sehr unterschiedlichen Prioritäten entworfen.
random ist auf hohe Leistung bei Modellierung und Simulation optimiert, mit einer „gut genug“ Pseudozufallszahlengenerierung.secrets ist darauf ausgelegt, kryptografisch sicher zu sein, für Anwendungen wie Passwort-Hashing, die Generierung von Sicherheitstokens und die Authentifizierung von Konten.Weitere Details dazu, warum die Ergänzung des Moduls secrets notwendig war, stehen in PEP 506.
Das Modul secrets ist relativ klein und unkompliziert, mit Methoden zum Erzeugen zufälliger Ganzzahlen, Bits, Bytes, Tokens oder eines zufälligen Eintrags aus einer gegebenen Sequenz.
Um secrets zu verwenden, musst du es zuerst mit import importieren:
>>> 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'
Wenn du sicherheitskritische Anwendungen schreibst, solltest du unbedingt die vollständige Dokumentation lesen, die weitere Hinweise und Beispiele enthält.