Находят ли программисты Python проблему пробелов неудобной? [закрыто]


11

Многие программисты, впервые столкнувшись с Python, сразу же откладывают значение пробела. Я слышал множество причин, по которым это неудобно, но я никогда не слышал жалоб от программиста на Python.

Конечно, я не встречал много программистов на Python, так как я провел свою карьеру в мире Java.

Итак, мой вопрос к тем из вас, кто участвовал в большом проекте Python (более 3 месяцев, причем Python был основным используемым языком): вы считаете проблему с пробелами неудобной и постоянно раздражающей? Или это было не проблема, когда вы попали в поток?

Я не задаю вопрос, потому что я за или против Python, или за или против его использования пробела. Мне нравится Python, но я никогда не использовал его для чего-то большого.

Пожалуйста, не предоставляйте предположений, если у вас нет опыта работы с Python.


2
Будут ли они использовать язык, если они это сделали? Я бы не стал. Раздражающие / отвлекающие синтаксические требования - это одна из вещей, которая может заставить меня выбрать другой язык для проекта (если, конечно, я могу выбрать).

с каких пор пропуски становятся проблемой? :-)
Кугель,

22
Нам неудобно, что все остальные продолжают это поднимать. Мы никогда не думаем об этом.
Уинстон Эверт

Проблема пробелов не отличается от той, что была много лет назад - в OCCAM2 было много пустых пространств. Это было не страшно.
быстро,

4
Единственный раз, когда я нахожу это раздражающим, это когда копируемый код из сети, который был написан с использованием пробелов вместо вкладок (или наоборот), вызывает буквально невидимые синтаксические ошибки
Камерон

Ответы:


14

Есть только один случай, когда я считаю, что пробел раздражает, и это при изменении существующего кода, чтобы блок кода становился более или менее отступом, чем раньше (например, добавление или удаление if:перед кодом). Когда вы пишете на таком языке, как C, вы просто добавляете ifи пару скобок и (в Emacs, или я представляю себе хороший редактор) нажимаете Tab, чтобы редактор автоматически исправлял отступ. В Python вы должны сделать это самостоятельно. Конечно, есть ярлыки редактора, чтобы сделать это самостоятельно, так что это не так уж и плохо, но потеря избыточности налагает небольшую дополнительную нагрузку на программиста.

В целом, это победа, хотя бы для предотвращения того, чтобы половина моего экрана была заполнена такими строками:

         }
      }
   }
}

1
В любом разумном редакторе, который говорит на Python, есть очень простой способ переопределить блок кода. В Wing IDE я просто выбираю блок и нажимаю Tab (или Shift-Tab, чтобы уменьшить уровень отступа).
Адам Кроссленд

1
Да, в Emacs я выбираю блок и нажимаю C-c >или C-c <. Вы все еще должны сделать это самостоятельно, хотя. Иными словами, поскольку пробельные символы и логика кода не являются избыточными, вы не можете просто выбрать гигантский блок и вызвать M-x indent-region(или какой бы то ни было версией вашего редактора) отступ для всего этого «правильно».
dfan

6
@ Adam, хороший редактор облегчает изменение уровня отступов. Но на языке фигурных скобок вы можете вставить новый код и нажать свое любимое нажатие клавиши, чтобы заново создать файл. Тада! Отступ правильный. В python вы должны вставить, выбрать, отступ / отступ. Это немного, но здесь есть небольшая победа для фигурных скобок.
Уинстон Эверт

@ Винстон - должен быть вашим редактором. Если код, который вы вставляете, сам по себе правильно с отступом, то, если он выходит на несколько уровней слишком далеко вправо / влево, это всего лишь вопрос ввода (SHIFT +) Tab, чтобы выровнять его соответствующим образом - не большая разница для нажатия клавиши Пересмотрите файл. Кроме того - ты не должен копировать / вставлять код :)
Инго

1
@Winston: даже блоки отступов Notepad ++ при использовании Tab и Shift-Tab, я еще не нашел ярлык vim, но я не использую его достаточно, я думаю: p
Матье М.

50

Я люблю значительные пробелы Python. Для меня это идеальный пример СУХОГО на синтаксическом уровне. Удобный для восприятия способ указать, где блок кода начинается и заканчивается, с отступом. Если вы хотите, чтобы ваш код был читабельным, вы должны делать отступы независимо от языка. Глупо заставлять программиста указывать эту информацию дважды, один раз для компилятора / интерпретатора и один раз для людей. Кроме того, отступ в C-подобных языках похож на комментарий: он предназначен для улучшения понимания, но его значение не обеспечивается компилятором / интерпретатором, и он может очень легко не синхронизироваться с реальным значением (где находятся фигурные скобки), запутывая, а не проясняя.


8
+1 за Не повторяйся. Хорошей практикой является отступ кода для отражения блочной структуры в любом случае, так почему же есть маркеры начала / конца?
Steve314

12

Значительные пробелы на самом деле удобны для меня. Это заставляет меня печатать меньше. Он форматирует код аккуратно и довольно однозначно. Благодаря этому он делает код более читабельным.

(Мне также нравятся значительные пробелы в Haskell по тем же причинам.)


1
Я бы также поделился своим положительным опытом с пробелами на Haskell, но FarmBoy настаивал, что нужно иметь 3-месячный опыт работы с Python, все остальное было спекуляцией. :-)
Инго

1
Мой опыт работы с Python у нас с 1998 года, поэтому мой ответ, вероятно, соответствует требованиям :) (Жаль, что мой опыт работы с Haskell намного короче.)
9000

@ 9000 Несмотря на то, что Haskell появился раньше Python! : D
pradyunsg

8

Когда я впервые использовал python, пробельные символы были новыми и, следовательно, раздражающим ограничением.

Теперь я даже не замечаю этого. Я использую Python в течение 11 месяцев.


5

Во-первых, я использую такие языки как Python, SQL и Java. Я люблю пробелы в Python - он меньше синтаксис и типизирует, и заставляет людей писать разборчивый, аккуратно отформатированный код. OTOH, я ненавижу многословие Java - настолько, что я фактически использую Python для генерации всего шаблона, который я должен написать на Java, что впечатляет всех моих коллег по Java, которые поражены моей производительностью.

Однако одно большое предостережение заключается в том, что при копировании / вставке кода из Интернета это часто приводит к смешанным пробелам и вкладкам, для очистки которых требуется дополнительный шаг, и я обычно ловлю только после исключения времени выполнения.


Говорить вашему редактору о выделении синтаксиса во вкладках, поскольку ошибки могут очень помочь - для vim, который я использую highlight link RedundantSpaces Error | au BufEnter,BufRead * match RedundantSpaces "\t" | au BufEnter,BufRead * match RedundantSpaces "[[:space:]]\+$"в своем vimrc
Daenyth

4

Если программиста раздражает значение пробелов, он, вероятно, не станет программистом Python.


1
Я слышал, что довольно много людей, проповедующих Python, говорят, что у них были проблемы с The Whitespace Thing (tm), но через некоторое время они мне понравились. Из моего наблюдения кажется, что, поскольку все больше людей присоединяются к дискуссии на эту тему, вероятность того, что один из них рассказывает такую ​​историю, приближается к одной. (Правка: сразу доказано вторым ответом ...)

@delnan, я могу подписаться на это.
Инго

3

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

В любом случае, после того, как вы усвоили Python, это больше не проблема; на самом деле его лаконичность и малое пространство на экране становятся большим преимуществом для удобочитаемости. Поскольку я использую в основном Python, я считаю, что языки, в которых больше избыточности (например, Java и C #), трудно дисциплинировать, чтобы они могли писать. Надевание скобок на код, отступ которого уже проясняет его структуру, действует мне на нервы.


3

Для реального кодирования это совсем не неудобно, но на самом деле полезно (см. Ответ dsimcha).

Это может раздражать при работе с коммуникационными технологиями, которые не учитывают лидирующие пробелы (например, многие веб-форумы, не ориентированные на программирование, а также при встраивании кода Python в другой язык, такой как языки шаблонов HTML), даже если я вижу это как больше дефектов в инструментах, которые удаляют начальные пробелы, чем дефект в Python, правда, что избыточные языки, которые дважды выражают структуру кода, лучше приспособлены для обработки таких деструктивных сред (поскольку вы можете вставить код в редактор и автоматически переиндентировать на основе явных структурных маркеров или просто не заботиться о том, чтобы код выполнялся, а не читался людьми).


2

Я не считаю пробелы раздражающими. Отсутствие или непоследовательность отступов меня очень раздражает на других языках. Я понимаю, что эта проблема - одна из проблем, которые должен решить стиль.

Python не является одним из моих основных языков.

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


1
смешивание табуляции и пробела в отступе Python - кратчайший путь в ад: p
Матье М.

@Mattieu: Определенно, это мое раздражение.
BillThor

1

Я пришел из C # / Javascript / XBase фона в произвольном порядке, и в моих увлечениях Python это вообще не для меня. Это как фигурные скобки на других языках - вот как это работает, вставьте вещи, как говорят правила, и высушите глаза - это мое отношение.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.