2013-07-13 2 views
26

Это не работает:Python: '#' Комментарии после обратной косой черты

something = \ 
    line_of_code * \ # Comment 
    another_line_of_code * \ # Comment 
    and_another_one * \   # Comment 
    etc 

Ни не делает это:

something = \ 
    # Comment \ 
    line_of_code * \ 
    # Comment \ 
    another_line_of_code * ... 

Ни делает это:

something = \ 
    ''' Comment ''' \ 
    line_of_code * \ 
    ''' Comment ''' \ 
    another_line_of_code * ... 

Если есть способ комментировать код, разбитый на несколько строк?

ответ

30

Делают это так:

a, b, c, d = range(1, 5) 

result = (
    # First is 1 
    a * 
    # Then goes 2, result is 2 now 
    b * 
    # And then 3, result is 6 
    c * 
    # And 4, result should be 24 
    d 
) 

На самом деле, according to PEP8 круглые скобки предпочтительнее косые, при разрыве что-то в несколько строк:

Предпочтительный способ упаковки длинных линий с помощью языка Python подразумеваемые продолжение строки в круглых скобках, скобках и фигурных скобках. Длинные строки могут быть разбиты на несколько строк, обертывая выражения в круглых скобках. Они должны использоваться вместо использования обратной косой черты для продолжения строки.

В вашем случае это также позволяет оставлять комментарии.

Вот доказательство того, что он работает: http://ideone.com/FlccUJ

+0

Кроме того, вы можете это сделать: http://www.python.org/dev/peps/pep-0008/#maximum-line-length – Yotam

+0

@Yotam: Собственно, см. Ссылку, прилагаемую к "_ согласно PEP8_ "в моем ответе. Кроме того, цитата из моего ответа идет прямо из того, что вы здесь вставляете. – Tadeck

+4

Что нам делать, чтобы разбивать точки в этом случае? 'obj.method1 (args1) .method2 (args2) .method3 (args3)' –

-1

Не уверен, что вы пытаетесь сделать, это поддерживается питона. Прочтите PEP8 section about inline comments. Помещение комментариев в середине продолжения строки является «уродливым» и, вероятно, запутанным.

Путь Python с # на каждой строке, если вы хотите комментировать что-то или для встроенных комментариев, все после # игнорируется.

Если вы действительно хотите прокомментировать многострочный оператор, который действительно необходим, поставьте его перед или после него.

a, b, c, d = range(1, 5) 
# a is ..., b is ... 
# c is ..., d is ... 
result = (a, b, c, d) 

определенно не хочу, чтобы попасть в спор о стиле, но только потому, что вы можете сделать что-то не означает, что это понятно. Встроенные комментарии отлично подходят для пояснения коротких строк кода, для которых требуется короткий указатель.

+0

Ну, ссылка в разделе PEP8 ничего не говорит о комментариях в продолжении строки. В нем говорится, что встроенные комментарии отвлекают, если они очевидны, но иногда полезны. В этом случае я предполагаю, что они полезны.Также можно прокомментировать многострочные заявления (см. [Мой ответ] (http://stackoverflow.com/a/17630918/548696)). И стандарт заключается в том, чтобы помещать комментарии блока _before_, что они комментируют ([источник] (http://www.python.org/dev/peps/pep-0008/#block-comments)), конечно, это примерно _block_ комментарии, а не _inline_ комментарии (которые, очевидно, должны быть после прокомментированной части). – Tadeck