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

ПРИМЕЧАНИЕ : этот ответ был записан в 2008. В то время, когда лучшее решение перекрестного браузера для большинства людей действительно состояло в том, чтобы использовать jQuery. Я оставляю ответ здесь для потомства и, если Вы используете jQuery, это - хороший способ сделать это. При использовании некоторой другой платформы или чистого JavaScript, принятый ответ является, вероятно, способом пойти.

С jQuery 1.2.6 можно использовать одно из ядра функции CSS , height и width (или outerHeight и outerWidth, как соответствующее).

var height = $("#myDiv").height();
var width = $("#myDiv").width();

var docHeight = $(document).height();
var docWidth = $(document).width();

69
задан smci 10 November 2017 в 23:46
поделиться

13 ответов

Everyone else uses 4 spaces. That is the only reason to use 4 spaces that I've come across and accepted. In my heart, I still want to use tabs (1 indent character per indent, makes sense, no? Separate indent from other whitespace. I don't care that tabs can be displayed as different widths, that makes no syntactic difference. The worst that can happen is that some of the comments don't line up. The horror!) but I've accepted that since the python community as a whole uses 4 spaces, I use 4 spaces. This way, I can assemble code from snippets others have written, and it all works.

112
ответ дан 24 November 2019 в 13:35
поделиться

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

0
ответ дан 24 November 2019 в 13:35
поделиться

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

1
ответ дан 24 November 2019 в 13:35
поделиться

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

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

Конечно,

4
ответ дан 24 November 2019 в 13:35
поделиться

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

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

1
ответ дан 24 November 2019 в 13:35
поделиться

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

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

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

7
ответ дан 24 November 2019 в 13:35
поделиться

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

12
ответ дан 24 November 2019 в 13:35
поделиться

Also one of reasons is: when you have some long line (longer than 80 symbols) and want to split it in 2 you will have only 1 space to indent, that is a bit confusing:

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
5
ответ дан 24 November 2019 в 13:35
поделиться

Identation and general coding style standards vary from language to language, project to project. There is one reason for adopting a coding style standard: so that the code look uniform, no matter who wrote it. That improves legibility in the project, and, to put it bluntly, it looks better.

There is one reason that is not valid when adopting a coding style standard: because you like it. Coding standards exists precisely because people's preferences vary, and if left to their own, chaos would ensue, to the detriment of all.

If you are writing code for yourself alone, which no one will ever read, go ahead and write it whatever you like. Otherwise, following the accepted standard of your community will make your code much more agreeable to everyone else's eyes. And remember, too, that if you DO decide to contribute code to a community in the future, you'll have an easier time if you are used to their coding style already.

As for changing the tab size, there are are many source code formatters out there which support Python, and most programmer's editors and IDEs also have this capability. You probably have it already, it's just a matter of consulting the documentation for the editor you are using.

3
ответ дан 24 November 2019 в 13:35
поделиться

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

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

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

    • Гвидо они нравятся.
    • Вы не можете легко введите здесь вкладку, она передает фокус (хотя вы можете вставить ее).
    45
    ответ дан 24 November 2019 в 13:35
    поделиться

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

    У него также есть положительная сторона, заключающаяся в том, что он является половиной вкладки "w / r к историческому определению" вкладки ".

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

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

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

    14
    ответ дан 24 November 2019 в 13:35
    поделиться

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

    def·foo():
    ····pass
    
    69
    ответ дан 24 November 2019 в 13:35
    поделиться

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

    1
    ответ дан 24 November 2019 в 13:35
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: