Como gerar cores hexadecimais aleatórias no Python?

Publicado em:
from random import random
hex = '#%06X' % round(random() * 0xffffff)
print(hex)

Ou:

from random import random
hex = '#{:06X}'.format(round(random() * 0xffffff))
print(hex)

Sendo assim, poderíamos criar uma função:

from random import random

def random_hex_color(end = 0xffffff):
    return '#%06X' % round(random() * end)

random_hex_color() # '#B52D1B'
random_hex_color() # '#85D257' 

Explicando o código

A lógica é bem parecida com a geração de cores aleatórias pelo PHP e como gerar cores aleatórias com Javascript?.

A função random.random gerará um número aleatório float de 0 a 1. Multiplicamos o resultado por 0xffffff, que é uma notação hexadecimal, representando o valor máximo de uma cor hexadecimal. A função round garante que o valor sempre será um int.

Em seguida, utilizamos a string %06X ou {:06X} para formatar o número para hexadecimal, preenchendo sempre com até 6 zeros a esquerda, para que não forme uma cor hexadecimal inválida. A string é sempre iniciada por #, pois é utilizada no CSS para identificar cores hexadecimais.