Generar contraseñas con Python 3.6

Muchas veces me preguntan como generar contraseñas en Python de la manera más segura. Con Python 3.6 se ha añadido el módulo Secrets. De forma nativa, podemos generar cadenas aleatorias y seguras. Las podemos utilizar para:

Ejemplos.

import secrets
secrets.token_hex(16)
'ab31d8a5a749f4bdb844c88d337fe7a5'

Preparadas para URLs

import secrets
secrets.token_urlsafe(16)
'IIR_NcHX2PmFPP1y2V8BCg'

En bytes

import secrets
secrets.token_bytes()
b'\xc6wh\xc5\x075?\xed_\x91\t6\xc6+\xffS\xcf\xd7\xe7\xd0\xbb;\xa7\xa5p\xa3\xc6\x8d\xd7\xbbj\t'
import secrets
secrets.token_bytes(16)
b'&\x82\xed8\x071\xfe\x01\x9d|\x86\x98\xe9[\x83{'
Versión escritorio