Forma de impresión de Python: ¿con 'formato' o forma de porcentaje? [duplicar]

Esta pregunta ya tiene una respuesta aquí:

Formato de cadena de Python:% vs. .format 17 respuestas

En Python parece que hay dos formas diferentes de generar resultados con formato:

user = "Alex"
number = 38746
print("%s asked %d questions on stackoverflow.com" % (user, number))
print("{0} asked {1} questions on stackoverflow.com".format(user, number))

¿Hay una manera de ser preferido sobre el otro? ¿Son equivalentes, cuál es la diferencia? ¿Qué forma se debe utilizar, especialmente para Python3?

Respuestas a la pregunta(4)

Su respuesta a la pregunta