Подтвердить что ты не робот

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

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

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

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


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


Итак, суммируем:

Плюсы:

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

Минусы:

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

Спасибо.

4b9b3361

Ответ 1

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

Ответ 2

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

def·foo():
····pass

Ответ 3

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

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

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

Преимущества пробелов:

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

Ответ 4

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

Он также имеет верхнюю часть "полу-вкладки" с историческим определением "вкладки".

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

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

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

Ответ 5

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

Ответ 6

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

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

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

Ответ 7

Также одна из причин: когда у вас есть длинная строка (длиннее 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

Ответ 8

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

Чтобы внести изменения, вам просто нужно изменить все начальные строки на те, которые в два раза больше. Есть много способов сделать это; в текстовом редакторе 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 не могло сделать это очень легко.

Ответ 9

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

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

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

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

Ответ 10

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

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

Ответ 11

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

Ответ 12

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

Ответ 13

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