Синтаксические причуды или почему этот правильный питон

Почему в Python 2.6 допустима следующая строка?

my_line = 'foo' 'bar'

и если это действительно так, почему не так:

my_list = 1 2 

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

foo = 'foo'
bar = 'bar'
foo_bar = foo bar
8 голосов | спросил Boris Gorelik 21 MonEurope/Moscow2009-12-21T18:23:16+03:00Europe/Moscow12bEurope/MoscowMon, 21 Dec 2009 18:23:16 +0300 2009, 18:23:16

4 ответа


0

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

  

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

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

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

ответил Peter Hansen 21 MonEurope/Moscow2009-12-21T18:36:25+03:00Europe/Moscow12bEurope/MoscowMon, 21 Dec 2009 18:36:25 +0300 2009, 18:36:25
0

my_line = 'foo' 'bar' - конкатенация строк.

ответил jldupont 21 MonEurope/Moscow2009-12-21T18:24:16+03:00Europe/Moscow12bEurope/MoscowMon, 21 Dec 2009 18:24:16 +0300 2009, 18:24:16
0

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

char* ptr = "hello " "world";

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

  

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

ответил Eli Bendersky 21 MonEurope/Moscow2009-12-21T19:02:56+03:00Europe/Moscow12bEurope/MoscowMon, 21 Dec 2009 19:02:56 +0300 2009, 19:02:56
0

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

Целочисленная конкатенация не имеет смысла.

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

ответил S.Lott 21 MonEurope/Moscow2009-12-21T18:56:56+03:00Europe/Moscow12bEurope/MoscowMon, 21 Dec 2009 18:56:56 +0300 2009, 18:56:56

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132