Причуды синтаксиса или почему то, что действительный Python

В python 2.6, почему следующая строка допустима?

my_line = 'foo' 'bar'

и если это допустимо, почему не следующее:

my_list = 1 2 

Первым примером является конкатенация строк, однако, следующее не допустимо ни один (слава Богу):

foo = 'foo'
bar = 'bar'
foo_bar = foo bar
8
задан Boris Gorelik 21 December 2009 в 15:30
поделиться

4 ответа

Выполняется конкатенация строковых литералов . Как отмечено в документации, преимущества включают следующее:

Эта функция может использоваться для уменьшения необходимое количество обратных косых черт для разделения длинные струны удобно через длинные строк или даже добавить комментарии к части строк ...

Далее следует отметить, что эта конкатенация выполняется во время компиляции , а не во время выполнения.

История и обоснование этого, а также отклоненное предложение удалить функция описана в PEP 3126 .

20
ответ дан 5 December 2019 в 04:52
поделиться

my_line = 'foo' 'bar' is string concatenation.

8
ответ дан 5 December 2019 в 04:52
поделиться

Возможно, это происхождение С. В C совершенно верно следующее:

char* ptr = "hello " "world";

Он реализован препроцессором C (cpp) , и в этой ссылке приводится следующее обоснование:

это позволяет разделять длинные строки по нескольким линиям, а также позволяет строковые литералы, полученные из C препроцессор определяет и макросы, которые будут добавляется к строкам во время компиляции

6
ответ дан 5 December 2019 в 04:52
поделиться

Это не противоречит. Строки и целые числа имеют разные методы.

Целочисленное объединение бессмысленно.

Конкатенация строк - это значимое поведение по умолчанию.

5
ответ дан 5 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: