Python 3.6+secretsфункция
secrets.choice()
случайные числа
Криптографически стойко выбирает один случайный элемент непустой последовательности.
Синтаксис
secrets.choice(seq)
Тот же интерфейс, что у random.choice, но нельзя задать seed и предсказать результат. Для паролей выбирайте символы в цикле: ''.join(secrets.choice(alphabet) for _ in range(n)). Пустая последовательность даёт IndexError, а множество — TypeError, потому что у него нет индексов.
Примеры
import secrets, string
alphabet = string.ascii_letters + string.digits
password = ''.join(secrets.choice(alphabet) for _ in range(12))
print(len(password)) # → 12
print(password) # → ? случайный пароль
import secrets
try:
secrets.choice([])
except IndexError as e:
print(type(e).__name__) # → IndexError
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности