Forma de impressão em Python: com 'formato' ou forma de porcentagem? [duplicado]

Esta questão já tem uma resposta aqui:

Formatação de string do Python:% vs. .format 17 respostas

Em Python, parece haver duas maneiras diferentes de gerar saída formatada:

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))

Existe uma maneira de ser preferido em detrimento do outro? Eles são equivalentes, qual é a diferença? Qual formulário deve ser usado, especialmente para o Python3?

questionAnswers(4)

yourAnswerToTheQuestion