Python % vs .format

В чем разница между использованием % и .format при работе со строками? Когда лучше использовать % , а когда .format?

Между ними разницы нету, что %, что .format форматируют строку. Разница состоит только в том как будет оформлена ставка в коде, иногда написание через % может повысить его читаемость, а иногда наоборот. Лично от себя могу сказать, что .format намного удобнее использовать нежели % и он более структурирован и имеет больше вариаций использования .например, в этой ситуации:

list = [61, 13, 1, 784, 2, 69, 4, 4123, 41]
print map('the number is {}'.format,list)

результат:

['the number is 61', 'the number is 13', 'the number is 1', 'the number is 784', 'the number is 2', 'the number is 69', 'the number is 4', 'the number is 4123', 'the number is 41']

также передачу кортежа через оператор % нужно брать в скобки, что выглядит не очень красиво:

number = (1,2,3)
print "the number is %s" % (number,))