در مفهومی پیشین دربارهی ماژول random صحبت کردیم که اعداد شبهتصادفی و ترتیبهای شبهتصادفی فهرست را تولید میکند.
ماژول secrets در بخشی از کارکردهایش با random همپوشانی دارد، اما این دو ماژول با اولویتهای بسیار متفاوتی طراحی شدهاند.
random برای کارایی بالا در مدلسازی و شبیهسازی بهینه شده است و تولید اعداد شبهتصادفیاش «بهقدر کافی خوب» است.secrets برای امنیت رمزنگاریشده طراحی شده است، برای کاربردهایی مانند درهمسازی رمز عبور، تولید توکن امنیتی و احراز هویت حساب کاربری.جزئیات بیشتر دربارهی این که چرا افزودن ماژول secrets ضروری بود، در PEP 506 آمده است.
ماژول secrets نسبتاً کوچک و ساده است و روشهایی برای تولید اعداد صحیح، بیت، بایت و توکن تصادفی، یا برداشتن یک عنصر تصادفی از یک دنبالهی دادهشده دارد.
برای استفاده از secrets، ابتدا باید آن را 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'
اگر برنامههایی مینویسید که به امنیت حساساند، قطعاً میخواهید مستندات کامل را بخوانید که توصیهها و مثالهای بیشتری ارائه میدهد.