В python 2.6, почему следующая строка допустима?
my_line = 'foo' 'bar'
и если это допустимо, почему не следующее:
my_list = 1 2
Первым примером является конкатенация строк, однако, следующее не допустимо ни один (слава Богу):
foo = 'foo'
bar = 'bar'
foo_bar = foo bar
Выполняется конкатенация строковых литералов . Как отмечено в документации, преимущества включают следующее:
Эта функция может использоваться для уменьшения необходимое количество обратных косых черт для разделения длинные струны удобно через длинные строк или даже добавить комментарии к части строк ...
Далее следует отметить, что эта конкатенация выполняется во время компиляции , а не во время выполнения.
История и обоснование этого, а также отклоненное предложение удалить функция описана в PEP 3126 .
Возможно, это происхождение С. В C совершенно верно следующее:
char* ptr = "hello " "world";
Он реализован препроцессором C (cpp) , и в этой ссылке приводится следующее обоснование:
это позволяет разделять длинные строки по нескольким линиям, а также позволяет строковые литералы, полученные из C препроцессор определяет и макросы, которые будут добавляется к строкам во время компиляции
Это не противоречит. Строки и целые числа имеют разные методы.
Целочисленное объединение бессмысленно.
Конкатенация строк - это значимое поведение по умолчанию.