Python: использование 4 пробелов для отступа. Зачем? [закрытый]



при кодировании python я использую только 2 пробела для отступа, конечно PEP-8 очень рекомендую иметь 4 места, но исторически для меня это необычно.

Итак, может ли кто-нибудь убедить меня использовать 4 пробела вместо 2? Какие плюсы и минусы?

P. S. И, наконец, что простой способ, чтобы преобразовать все существующие кода от 2 места на 4 места?


P. P. S. PEP-8 также настоятельно не рекомендуется использовать вкладки для отступа. читать здесь


Итак, подведем итоги:

плюсы:

  • есть больше места для размещения при обертывании строки длиной более 80 строк.
  • можно скопировать код из фрагментов, и он просто работает.

плюсы:

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

спасибо.

781   13  

13 ответов:

все остальные используют 4 пробела. Это единственная причина использовать 4 пробела, с которыми я столкнулся и принял. В моем сердце я все еще хочу использовать вкладки (1 символ отступа на отступ, имеет смысл, нет? Отделите отступ от других пробелов. Мне все равно, что вкладки могут быть отображается как разные ширины, это не имеет никакого синтаксического различия. Самое худшее, что может случиться, что некоторые комментарии не выстраиваются. Какой ужас!) но я принял это, так как сообщество python в целом использует 4 пробела, я использую 4 пробела. Таким образом, я могу собрать код из фрагментов, написанных другими, и все это работает.

Мне нравится тот факт, что четыре пробела красиво отступает внутренний код функции, потому что def + один пробел делает четыре символа.

def·foo():
····pass

Я думаю, что реальный вопрос заключается в том, почему пробелы, а не вкладки.

вкладки явно лучше:

  • это делает почти невозможно иметь непоследовательный отступ (Я видел код, который обычно имеет отступы 4 пробелов, но тогда некоторые части оказываются одним пробелом, трудно сказать простым осмотром, есть ли 7 или 8 пробелов... Это не произойдет с вкладками, если вы не установите tabstop на 1 пробел).
  • вкладка логическая семантический представление для отступа, это позволяет вам (и любому другому разработчику) выбрать дисплей как много "пробелов" (или, скорее, столбцов) вы хотите, не связываясь с предпочтениями других людей.
  • также меньше клавиш если у вас есть только "блокнот" (или другой манекен редактор) под рукой.
  • добавление и удаление вкладок-это симметричного операции. Большинство IDE может вставлять автоматически 4 пробела при ударе клавиша tab, но обычно они удаляют только 1 пробел при нажатии backspace (операция un-indent по-прежнему доступна как shift-tab, но это комбинация из двух клавиш) или вы используете мышь, чтобы щелкнуть в середине отступа и удалить один символ.
  • они принимают только 1 байт, а не 4 (умножьте на тысячи строк, и вы сохраните несколько КБ! :p)
  • у вас есть еще одна вещь, чтобы урегулировать соглашение, потому что если вы решите пойти на пробелы, то обсуждение начинается снова чтобы выбрать, сколько (хотя консенсус, кажется, около четырех).

преимущества помещения:

  • Гвидо любит их.
  • вы не можете легко ввести вкладку здесь, он передает Фокус (хотя вы можете вставить один).

нет никакого" лучшего " отступа. Это религиозная тема священной войны. Четыре хорошо, потому что этого достаточно, чтобы сделать отступ ясным, но не настолько, чтобы весь ваш экран был в основном пробелом, и вам нужно прокручивать горизонтально, чтобы прочитать половину программы.

Он также имеет преимущество быть " половинной вкладкой "w/r к историческому определению" вкладки."

кроме этого, используйте все, что нравится вашей группе. Это как шоколад и ваниль.

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

довольно легко сделать с помощью скрипта python тоже. Просто подсчитайте все ведущие пробелы, затем добавьте то же самое количество в начало строки и запишите его обратно.

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

любой приличный редактор (emacs, vim) будет абстрагировать всю эту ерунду для вас. Он будет одинаково хорошо работать с пробелами или вкладками, и его можно настроить для использования любого количества пробелов (или любого количества пробелов для символа вкладки). Он также может конвертировать между различными форматами без особых проблем (см. :retab команда в vim).

Если вы пытаетесь преобразовать исходное форматирование навалом, я рекомендую вам взглянуть на абзац полезность.

тем не менее, я не могу удержаться, чтобы не ответить на другой вопрос... Мои предпочтения всегда были для вкладок, так как он обходит всю проблему, и каждый может просматривать исходный код с шириной, установленной по своему усмотрению. Это также намного меньше печатать, когда вы работаете в редакторах, которые не помогают с преобразованием его. Что касается 2 против 4 пространств, это чисто косметическое.

также одна из причин: когда у вас есть какая-то длинная строка (более 80 символов) и вы хотите разделить ее на 2, у вас будет только 1 пробел для отступа, что немного сбивает с толку:

if code80symbolslong and somelongvariablegoeshere and somelongerthan80symbols \
 and someotherstatementhere:
  # some code inside if block
  pass

if code80symbolslong and somelongvariablegoeshere and somelongerthan80symbols \
  and someotherstatementhere:
    # some code inside if block
    pass

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

чтобы внести изменения, вам просто нужно изменить все начальные пространства на те, которые в два раза больше. Есть много способов сделать это; в текстовом редакторе Vim, я могу думать два: во-первых:

:%s/^\(\s\{2}\)\+/\=repeat(' ', len(submatch(0))*2)

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

vim *.py

(или эквивалент), а затем (непроверенный):

:argdo %s/^\(\s\{2}\)\+/\=repeat(' ', len(submatch(0))*2)/ | w

кроме того:

" Switch to hard tabs:
:set noexpandtab
" Set the tab stop to the current setting
:set tabstop=2
" Change all spaces to tabs based on tabstop
:retab!
" Change the tab stop to the new setting
:set tabstop=4
" Go back to soft tabs
:set expandtab
" Replace all the tabs in the current file to spaces
:retab

конечно, многие другие инструменты будут предлагать аналогичные функции: я был бы удивлен, если что-то вроде sed,awk,perl или python не мог сделать это очень легко.

Identation и общие стандарты стиля кодирования варьируются от языка к языку, от проекта к проекту. Есть одна причина для принятия стандарта стиля кодирования: чтобы код выглядел единообразно, независимо от того, кто его написал. Это улучшает разборчивость в проекте, и, грубо говоря, он выглядит лучше.

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

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

Как для изменения размера вкладки существует множество форматов исходного кода, которые поддерживают Python, и большинство редакторов и IDE программистов также имеют эту возможность. Вы, вероятно, уже есть, это просто вопрос консультации с документацией для редактора, который вы используете.

одна из причин заключается в том, что если вы используете меньше пробелов для отступа, вы сможете вложить больше операторов (поскольку длина строки обычно ограничена 80).

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

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

Если вы хотите писать код python вместе с другими программистами, это становится проблемой, если вы используете другой отступ, как они. Большинство программистов Python, как правило, используют отступ 4-space.

через 4 места или 2 места полностью зависит от вас. 4 пространства-это просто конвенция. Главное, не смешивать пробелы и символы табуляции. Используйте пробел

    Ничего не найдено.

Добавить ответ:
Отменить.