Ответ 1
Добавление многих строк отклонено, потому что:
- он не читается, по сравнению с альтернативами.
- это не так эффективно, как альтернативы.
- Если у вас есть другие типы, вы должны вручную называть
str
на них.
И, да, это действительно старо.: -)
В теории добавление строки создает новую строку. Итак, предположим, что вы добавляете строки n
, тогда вам нужно создать строки n-1
, но все из них, кроме одного, будут отброшены, потому что вас интересует только конечный результат.
Строки реализованы в виде массивов, поэтому у вас есть много потенциально дорогостоящих (повторных) выплат без выгоды.
Если у вас есть строка с заполнителями, она не только более читаема (у вас нет этих +
и str
между ними), но python также может вычислить, как долго последняя строка, и выделить только один массив для финальную строку и вставить все.
На практике это не совсем то, что происходит, потому что Python проверяет, является ли строка промежуточной и делает некоторую оптимизацию. Так что это не так плохо, как создание ненужных массивов n-2
.
Для небольших строк и/или интерактивного использования вы даже не заметите разницы. Но тогда другие способы имеют то преимущество, что они более читабельны.
Альтернативы могут быть (первые два скопированы из ответа @MKemps):
-
"Total score for {} is {}".format(name, score)
-
"Total score for %s is %s" % (name, score)
(также старый!) -
"Total score for {name} is {score}".format(name=name, score=score)
-
f"Total score for {name} is {score}"
(очень новый - введен в Python 3.6)
Особенно последние два примера показывают, что вы даже можете прочитать строку шаблона без необходимости вставлять что-либо.