2015-02-08 3 views
-6

Например: У меня естьxxPython комментарий многострочный не работает в массиве

array = [\ 
1, 
2, 
3, 
4 
] 

Я хочу закомментируйте 2 и 3 Это работает:

array = [\ 
1, 
#2, 
#3, 
4 
] 

Это не:

array = [\ 
1, 
''' 
2, 
3, 
''' 
4 
] 

Теперь представьте, что массив огромен. сотни линий. Я не могу найти простой способ сделать это, если вы не используете какой-либо трюк редактора. Я не могу поверить, что Python как язык не имеет того, что работает для нескольких строк комментария правильно. Опять же, факт, что у него нет {}, перепутано. Пожалуйста, укажите, как это должно быть сделано, и что я слишком глуп, чтобы найти его в Google.

- EDIT 2 - Я согласен с тем, что данные, хранящиеся таким образом, не идеальны. Но у меня есть какой-то плохой код. Мне нужно быстро разобраться в проблеме. Посмотрим правде в глаза, мы все были там, если вы никогда не работали в реальной работе. Любой другой язык, с которым я работал, прежде чем иметь синтаксис для блокировки комментариев нескольких строк, которые работают в любом месте кода. Разве никто не считает, что это проблема для Python?

+5

Если у вас есть большой массив (сотни строк), я бы счел, что проблема связана с тем, как вы храните данные, а не с тем, как работают комментарии python. –

+2

Любая промежуточная версия IDE позволит вам прокомментировать произвольное количество строк, это вряд ли «трюк» *. Также прочитайте [руководство по стилю] (https://www.python.org/dev/peps/pep-0008). – jonrsharpe

+3

Тройная цитата создает строку, она не создает комментарий; [Python docstrings] (https://www.python.org/dev/peps/pep-0257/#what-is-a-docstring) не являются комментариями. –

ответ

7

Вы используете его неправильно.

''' - многострочный синтаксис строки. Это не для комментариев в одиночку. Из-за конвертации строк вы не получаете свой результат.

Edit:

Хотя

array = [\ 
1, 
#2, 
#3, 
4 
] 

получает читать

array = [\ 
1, 
4 
] 

array = [\ 
1, 
''' 
2, 
3, 
''' 
4 
] 

получает читать

array = [\ 
1, 
"\n2,\n3,\n" 
4 
] 

Из-за этого мы видим синтаксическую ошибку.


Что я обнаружил себя только сейчас, что

array = [\ 
1, 
""" 
2, 
3, 
""" 
,4] 

Works :), как он получает читать как:

array = [\ 
1, 
"\n2,\n3,\n", 
4] 

Чтобы проверить это сделать:

print array 
+0

Как я уже сказал в своем комментарии к вопросу, докстры Bython ** не являются ** комментариями. –

+0

Вы правы @PM 2Ring. Я надеюсь, что новый стиль комментариев будет представлен для решения этой проблемы :) –

+1

Спасибо @Bhargav Rao, вы открываете глаза :) –

3

Предположим, что у вас нет даже полуподобного ed itor с комментариями, и предположим, что это единственный способ сделать это в большом файле. Если вы сделаете """...""", он создаст многострочный строковый литерал.Теперь, если все в вашем массиве, который представляют интерес числа или чего-либо, что является не строка, это ваш счастливый день:

array = [ 
1, 
2, 
""" 
3, 
4 
""", # this comma must be here 
5 
] 

Обратите внимание, что теперь ваш массив на самом деле [1, 2, '\n3,\n4\n', 5], то есть, представляет собой многострочную строку среди данных. Теперь вы можете отсеять любые строки в массиве, выполнив:

array = [ i for i in array if not isinstance(i, str) ] 

получить [1, 2, 5].

Конечно, это не происходит без накладных расходов, поэтому я предпочел бы воспользоваться «трюком редактора».

Смежные вопросы