(Вы используете Python 3.x, где print - это функция & mdash; в 2.x print - это оператор. Рекомендуется упомянуть основную версию Python & mdash; 2.x или 3.x & mdash; особенно когда с просьбой о помощи, потому что в настоящее время большинство людей разумно принимают 2.x, если это не указано.)
Первый, print('literal' + var1 + var2)
, оценивает выражение и передает единственный аргумент для печати. Второй, print('literal', var1, var2)
, просто передает три аргумента на печать. Это почти тот же результат, чисто случайно: так работает печать. Второй не выполняет никакой конкатенации, а просто выводит каждое значение, разделенное пробелом (что является поведением печати по умолчанию).
Чтобы быть явным: плюс в выражении означает выполнение конкатенации, но запятая не выполнение конкатенации.
Сроки: Я получил результаты ниже; однако, я считаю, что это предвзято, потому что строки очень короткие (например, более длинные строки могут изменить результат), и в любом случае печать, представленная в вопросе, не займет много времени (вы получите лучшую производительность, беспокоясь о многие другие вещи вместо этого).
Примечание: Используйте python -m timeit --help
для инструкций по использованию времени.
$ python -m timeit -s 'from cStringIO import StringIO; out = StringIO(); a = "abc"; b = "def"' 'print >>out, a, b'
100000 loops, best of 3: 7.68 usec per loop
$ python -m timeit -s 'from cStringIO import StringIO; out = StringIO(); a = "abc"; b = "def"' 'print >>out, a + " " + b'
100000 loops, best of 3: 4.67 usec per loop
$ python -m timeit -s 'from cStringIO import StringIO; out = StringIO(); a = "abc"; b = "def"' 'print >>out, " ".join([a, b])'
100000 loops, best of 3: 5.37 usec per loop
В частности, обратите внимание, что каждый код будет выдавать один и тот же вывод (сравнивать бессмысленно, если один метод дает неправильные результаты ). StringIO - это простой способ печати , а не на экране в этих тестах, но это также может повлиять на результаты.