Вопрос

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

Как это меняет ситуацию?Есть ли другие причины, по которым в Python можно использовать пробелы вместо табуляции?Или это просто неправда?

Должен ли я сразу переключить свой редактор на вставку пробелов вместо табуляции или продолжать, как раньше?

Это было полезно?

Решение

Потому что ПЭП-8 говорит нам использовать пробелы.

Другие советы

Устали гоняться за опечатками в отступах (8 пробелов?нет, 7 ой 9...) Я переключил источники на «только вкладки».

1 табуляция == 1 уровень отступа, точка

Дело в том:если вы хотите отображать отступ шириной 4, 8 или пи/12 символов, просто измените настройки в текстовом редакторе, не связывайтесь с кодом.

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

Так говорил Господь:Сделайте отступ в четыре пробела.Не больше, не меньше.Четыре будет числом пробелов, которые ты должен сделать, и число твоих отступов будет четыре.Не делай отступа ни восьми, ни двух, за исключением того, что затем ты перейдёшь к четырем.Вкладки отсутствуют. -- Георг Брандл

ИСПОЛЬЗУЙТЕ РЕДАКТОР, КОТОРЫЙ ОТОБРАЖАЕТ СИМВОЛЫ ТАБУЛЯЦИИ (если уж на то пошло, все пробелы).Вы программируете, а не пишете статью.

Я использую табы.На вкладках нет места для ошибок в один пробел (если вы их видите).Проблема в том, что люди используют разные редакторы, и единственное общее в мире:tab==отступ, как указано выше.Какой-то парень приходит с клавишей табуляции, установленной на неправильное количество пробелов, или делает это вручную и создает беспорядок.TAB и используйте настоящий редактор.(Это противоречит не только PEP, но и C/C++ и другим языкам, не зависящим от пробелов).

/сходит с мыльницы

Моя основная причина использования табуляции вместо пробелов — это клавиша Backspace.Если я нахожусь на строке и хочу удалить отступ только в этой строке, мне нужно нажать Backspace 4 раза, если это были пробелы;тогда как мне нужно нажать на него только один раз, если это вкладка.

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

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

Ой!А использование клавиш со стрелками для перемещения влево и вправо — это всегда заноза в заднице, когда есть пробелы.

ОБНОВЛЯТЬ:Sublime Text 3 теперь удаляет полную программную вкладку с помощью клавиши Backspace;однако навигация с помощью клавиш со стрелками по-прежнему утомительна.

Tabs vs. Spaces for Indentation

ОБНОВЛЯТЬ:теперь я использую vscode а также написал Расширение TabSanity чтобы он мог решить проблему Backspace, удаления и навигации с помощью клавиш со стрелками.

TabSanity Extension in Action

Самый «питонический» способ — использовать 4 пробела на уровень отступа.Однако интерпретатор Python распознает пробелы и табуляции.Единственная проблема - это ты никогда не следует смешивать пробелы и табуляции, выберите тот или иной.Тем не менее, спецификация рекомендует пробелы, большинство разработчиков используют пробелы, поэтому, если у вас нет действительно веской причины не делать этого, я бы посоветовал использовать пробелы.

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

Плюсы вкладок:

  • Для отступа, удаления отступа и перемещения отступа требуется меньше нажатий клавиш.(Даже если в вашей IDE есть некоторые возможности в области отступов, она никогда не будет так хороша, как вкладки.)
  • Разные программисты могут использовать разные размеры отображения вкладок по своему усмотрению.
  • Курсор никогда не может располагаться «внутри» символа отступа.Например, предположим, что вы копируете несколько строк, с вкладками вы можете неопределенно щелкнуть в начале строки, чтобы начать выбор, и вы получите всю первую вкладку.При использовании пробелов вы, скорее всего, пропустите первый символ пробела, если только не достигнете крошечной цели между ним и полем.Аналогично удалению отступа из строки большинство редакторов плохо справляются с нажатием клавиши Backspace, если курсор находится в середине символа отступа из четырех пробелов.Обычно удаляется один пробел.С вкладками все работает как положено.
  • Совместимость с другими языками, поэтому вам не нужно настраивать редактор для использования, например.табуляции для C++/Java и пробелы для Python.
  • Неправильные отступы могут быть более очевидными (т.дополнительная табуляция намного больше, чем дополнительное пространство).

Минусы вкладок:

  • Большинство программистов Python используют пробелы, поэтому вы пойдете вразрез с соглашением.
  • Использовать пробелы для выравнивания многострочных операторов проще, чем использовать табуляцию.Ты мог используйте табуляцию для отступов и пробелы для выравнивания, но в Python это кажется немного рискованным!

Есть некоторые несущественные проблемы, которые некоторые люди преувеличивают:

  1. Вы можете получить лишние пробелы в отступах с вкладками, которые все портят:Практически все IDE/редакторы поддерживают визуализацию пробелов, и почти так же вероятно, что вы увидите случайные табуляции в отступах пространства!В любом случае я не вижу, чтобы это была распространенная ошибка.Кроме, большинство Ошибки отступов будут обнаружены Python, и хорошие IDE должны иметь возможность выделять различные отступы.

  2. Вы не можете легко выровнять вещи с помощью вкладок:Это верно, если вы стремитесь к идеальному выравниванию символов, но PEP-8 не рекомендует этого делать, а Python в любом случае не очень хорошо работает с многострочными операторами.

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

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

Так что, если вы Действительно не люблю быть несовместимым с большинство (предположительно не все!) Используйте код Python, используйте табуляцию и включите визуализацию пробелов и подсветку отступов (если доступно).Самая большая причина для меня — простота выбора и (довольно значительное, по моему мнению) сокращение количества нажатий клавиш.Некоторые соглашения глупы.

Обновлять:Я обнаружил, что во всем мире есть один редактор (исключая такую ​​ерунду, как Vim), который правильно поддерживает пробелы в качестве отступов:Атом.У него есть опция под названием «атомарные табуляции», которая заставляет 4 пробела вести себя так, как если бы это была табуляция во всех отношениях (кроме возможности изменять ее размер).К сожалению, Atom — довольно медленный и раздутый редактор, но это отличная функция, и если вам приходится использовать пробелы, это может быть хорошим вариантом.Надеюсь, однажды другие редакторы начнут его поддерживать. Вот проблема для VSCode.

Недавно я наткнулся на статью под названием Питон:Мифы об отступах где обсуждается этот и связанные с ним вопросы.В статье есть веские причины рекомендовать использование пробелов при написании кода Python, но, безусловно, есть место для разногласий.

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

Используйте редактор, который позволяет вставлять пробелы до табуляции при нажатии клавиши TAB вместо вставки символа .А потом забудь об этом.

Вы МОЖЕТЕ смешивать табуляции и пробелы...НО считается, что табуляция имеет тот же отступ, что и 8 пробелов, поэтому, если ваш редактор не настроен считать табуляцию состоящей из 8 пробелов, у вас возникнут проблемы при их смешивании.

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

Вкладки рулят.Тот же аргумент для вложенных циклов, и вы хотите вернуть внешний цикл «назад» на 1 уровень.Кончик:Если вы хотите преобразовать старый код Python с пробелами в табуляции, используйте утилиту TabOut, доступную в виде исполняемого файла на http://www.textpad.com/add-ons/.

Я твердо убежден, что, каковы бы ни были исторически сложившиеся традиции, табуляция — просто лучший выбор и должна заменять пробелы в каждой будущей строке написанного кода Python.Это как выгнать некомпетентного тирана.Моё обоснование этому следующее: простота как основная ценность.Использовать два, а может быть и четыре символа для смысловой задачи одного?ИМО, нет оправдания за пределами традиции.

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

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

Урок здесь заключается в том, что вы никогда не должны смешивать табуляции и пробелы.Если вы будете придерживаться этого правила, то ваш код будет легко разбить на пробелы или табуляции, независимо от того, что вы лично используете.Лучший способ убедиться, что вы не смешиваете табуляцию и пробелы, — всегда запускать python с -tt, что приведет к ошибке при смешивании табуляции и пробелов.

Что касается табуляции и пробелов, я лично использую табуляцию, чтобы отделить отступы от внешнего вида — гораздо проще изменить внешний вид кода, когда он имеет отступы с помощью табуляции, чем с помощью пробелов.Я знаю, что это противоречит тому, что делают 99% программистов Python, но это мое мнение. личный предпочтения, и в любом случае легко преобразовать файл с вкладками в файл с интервалами.Обратное не всегда верно, так как в строках можно случайно выбить 4 пробела и т.д.

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

  1. Во-первых, важно понять, как Python интерпретирует отступы.Брайан Окли упомянул о возможности ошибок на единицу при использовании вкладок, но на самом деле это невозможно при настройках интерпретатора по умолчанию.Лучшее объяснение этому есть в Изучение Python, от О'Рейли Медиа.

По сути, существует переменная (которую можно изменить, включив комментарий вверху исходного файла # tab-width:), определяющий ширину табуляции.Когда Python встречает табуляцию, он увеличивает расстояние отступа. до следующего кратного ширины табуляции.Таким образом, если слева от файла вводится пробел, за которым следует табуляция, следующее значение ширины табуляции будет кратно 8.Если вводится отдельная вкладка, происходит то же самое.

Таким образом, если ваш редактор настроен правильно, можно безопасно использовать табуляции и даже смешивать табуляции и пробелы.Пока вы устанавливаете табуляцию вашего редактора на ту же ширину, что и объявление ширины табуляции Python (или 8, если оно отсутствует).Обычно плохая идея использовать редактор с шириной табуляции, отличной от 8 пробелов, если только вы не укажете ширину табуляции в файле.

  1. Во-вторых, большая часть синтаксического дизайна Python призвана способствовать читабельности кода и единообразию стиля между программистами, работающими над одним проектом.Тем не менее, для любого конкретного проекта возникает вопрос: что сделает код наиболее читабельным? от людей, работающих над проектом.Конечно, сохранять единый стиль отступов — это хорошая идея, но в зависимости от платформы и редактора, используемого в проекте, для разных проектов может иметь смысл использовать разные стили.Если нет веской причины не соблюдать ПКП 8, то это имеет смысл, потому что это будет соответствовать ожиданиям людей.

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

Вкладки также полезны при работе с большими блоками текста с несколькими уровнями отступов.Когда вы отказываетесь от 3-4 уровней отступов, гораздо проще выровнять нужную табуляцию, чем выровнять нужное количество пробелов.Если в проекте не используется стиль, рекомендованный PEP 8, вероятно, лучше записать где-нибудь руководство по стилю в файл, чтобы шаблон отступов оставался последовательным, и другие люди могли подробно прочитать, как настроить свой редактор для соответствия.

Кроме того, в Python 2.x есть опция -t выдавать предупреждения о смешанных табуляциях и пробелах и -tt чтобы выдать ошибку.Это применимо только к смешанным табуляциям и пробелам внутри одной области.Python 3 предполагает -tt и, насколько я обнаружил, отключить эту проверку невозможно.

В основном я программист на C++, но иногда мои проекты включают небольшое количество Python.Я использую табуляцию для отступов в коде C++.Это означает, что у меня есть три варианта:

  1. Используйте табуляцию в C++ и пробелы в Python.Это позволяет моим файлам C++ оставаться такими, какие они есть, и я следую рекомендациям PEP-8, но в своем проекте я непоследователен.
  2. Измените мой код C++, чтобы использовать пробелы.Это позволяет всем моим файлам в проекте быть согласованными, и я следую рекомендациям PEP-8, но требует от меня вернуться и изменить все мои файлы C++.Я считаю это плохой вещью, потому что я предпочитаю вкладки.
  3. Используйте вкладки в моем коде C++ и коде Python.Это делает весь мой проект последовательным и позволяет мне использовать предпочитаемый мной стиль отступов:вкладки.Обратной стороной является то, что я не следую стандарту PEP-8.

Для своих проектов я обычно выбираю вариант 3.

Опыт и ПЭП-8 оба ясно приходят к выводу, что пространства смешивания и TABs следует избегать.Если вы хотите смешать их, вам придется визуализировать пробелы в IDE, но тогда вы потеряете преимущество отступов Python, делающих области видимости легко видимыми.Визуализация пробелов в IDE загромождает дисплей.

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

Несмотря на то, что существуют IDE, которые могут автоматически преобразовывать начальные пробелы в строке в табуляции, в конечном итоге это приведет к смеси табуляции и пробелов.Рассмотрите многострочные операторы, такие как вызовы функций с большим количеством параметров или строк документации.Хотя «ascii-art» также следует избегать, вполне может случайно случиться так, что после ведущих вкладок останется один пробел.

Другие ответы привели несколько аргументов в пользу вкладок:

  • Удар TAB является более эффективным.Конечно, это так, но все текстовые редакторы позволяют сразу вставлять нужное количество пробелов при нажатии клавиши табуляции.
  • Делать отступы/уступы проще, если нужно просто удалить одну табуляцию вместо 2/3/4/8 пробелов.Верно, но большинство текстовых редакторов все равно позволяют делать это автоматически:Выбор блока, отступ/отступ — это базовые функции программного редактора, такие как комментирование/раскомментирование.Если в текстовом редакторе это не реализовано, он должен, по крайней мере, иметь простую в использовании функциональность макросов, с помощью которой можно добиться того же самого.
  • Разным программистам нравится разная ширина отступов.Это правда, и это явное преимущество использования TABтолько.Проблема во взаимодействии с другими людьми и/или командами.Чтобы это работало в реальном мире, всем придется договориться обо всем, используя TABтолько.Раз этого не произошло, то все равно не работает.В реальном мире существует набор руководящих принципов кодирования, которые в любом случае согласовываются в проекте, и метод отступов, безусловно, является одним из них - даже в других языках программирования, где последствия являются «только» на визуальном уровне.

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

Ни один ответ не будет полным без ссылки, которая Грег предоставил в своем ответе уже: Питон:Мифы об отступах

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

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

def foobar():
    x = some_call(arg1,
                  arg2)

В этом случае использование только вкладок вообще не будет работать;использование табуляции для основного отступа и пробелов для подотступа будет работать, но нарушит жесткое правило не смешивать эти два понятия.

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

Проблема с использованием пробелов вместо табуляции заключается в том, что размер файла становится невероятно большим...Например, размер файла с отступом в 500 КБ можно уменьшить до 200 КБ при замене пробелов на табуляции, поэтому я всегда использую табуляции.

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

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

Помимо всех уже перечисленных аргументов, я считаю весьма важным еще один (от Мифы об отступах):

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

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

Аргумент для табуляции, о которых, похоже, никто еще не упомянул, заключается в том, что 1 табуляция — это 1 символ (0x09, 1 байт в файле), а 4 пробела — это 4 символа (4 раза 0x20, 4 байта в файле);таким образом, использование пробелов приводит к четырехкратной потере места.

В заключение этого бессвязного списка аргументов я хотел бы процитировать ответ Тима Питерса в Выпуск 7012:Табуляция лучше, чем пробелы для отступов:

Стандарт Python "Spaces" предназначен для распределенного кода.Годы раннего опыта научил нас вне сомнения, что вкладки вызвали бесконечные проблемы для общий код (...)

Как это меняет ситуацию?

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

Есть ли другие причины, по которым в Python можно использовать пробелы вместо табуляции?Или это просто неправда?

Да, есть и другие веские причины, на которые указывалось во многих ответах до меня.Так говорит «PEP-8», однако это НЕ одна из таких причин.Это происходит из-за самовоспроизводящегося мифа о том, что PEP-8 является стандартом кодирования для все Код Python, хотя на самом деле это просто стандарт кодирования для стандартного набора библиотек Python.Некоторые утверждают, что PEP-8 широко распространен, а некоторые утверждают, что большинство программистов Python используют пробелы вместо табуляции.Я хотел бы попросить доказательства этих утверждений, поскольку количество голосов на этом сайте ЯСНО показывает, что массы предпочитают вкладки.Мне очень прискорбно, что вы приняли фразу «PEP8 так говорит» в качестве ответа на свой вопрос, хотя на самом деле существует множество других ответов, которые на самом деле объясняют относительные преимущества и недостатки пробелов и табуляции.

Должен ли я сразу переключить свой редактор на вставку пробелов вместо табуляции или продолжать, как раньше?

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

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

Так в какую ситуацию вы попадаете?

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

Я считаю, что есть решение иметь оба:

  1. Совместимость с PEP-8 и использование пробелов
  2. Удобство использования табуляции вместо 4 пробелов

В Notepad++ перейдите в «Настройки» -> «Настройки вкладки» и выберите «Python» из списка справа.Затем убедитесь, что «Размер вкладки:4» и установите флажок «заменить [табуляцию] пробелом».В этом случае вы можете просто использовать клавишу табуляции для отступа, но Notepad++ фактически преобразует его в 4 пробела.

Это ПКП 8 по состоянию на июль 2017 г.:

Enter image description here

Кажется, это заявление не оставляет места для другого выбора.

Но это не только то, о чем говорит нам PEP 8, несколькими строками позже:

Enter image description here

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

Так:PEP 8 допускает отступы табуляции.Однако он не допускает смешивания табуляции и пробела для отступов, что, поскольку отступы сами по себе являются обязательными, вполне понятно.

Возможно, стоит упомянуть, что Стиль кодирования Python от Google также следует правилу четырех пространств.

Есть другие различные аргументы и оправдания в пользу табуляции или 4-х пробелов.

Если вы работаете в компании, которая применяет PEP 8, или регулярно делитесь своим кодом с другими, которые соблюдают PEP 8, то здравый смысл требует 4-х пробелов.Я привык (возможно, был) к табам из C/C++.Но при правильно настроенной IDE разница становится минимальной.

Используйте пробелы вместо табуляции только по той причине, что вы заработаете больше денег :)

Ссылка: Разработчики, использующие пробелы, зарабатывают больше, чем те, кто использует вкладки (Сообщение в блоге Stack Overflow).

Итак, я читаю все ответы и задаюсь вопросом, как я могу соответствовать PEP-8, не раздражаясь, постоянно нажимая кнопку Backspace, просто чтобы удалить отступ, и смотрю на свою игровую клавиатуру Logitech со всеми ее причудливыми макрокнопками и подсветкой. В моей голове загорается лампочка.

Я открыл программное обеспечение Logitech, определил пару макросов для кнопок рядом с кнопкой вкладок, и проблема решена.

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

Смотрите, посмотрите:" "<-- четыре пробела!Одним нажатием кнопки!Если бы я мог показать вам пробелы, я бы тоже это сделал.Приобретите клавиатуру Logitech G105, и все ваши проблемы исчезнут!

Я только начинаю, но мне гораздо проще использовать табуляцию, чем пробелы, и я не понимаю, как PEP-8 защищает только пробелы.Sublime Text 2 отлично справляется с визуализацией вкладок с помощью не совсем белой вертикальной пунктирной линии, и хотя бывают случаи, когда я смешиваю один или два пробела для выстраивания элементов списка или словаря, я не сталкивался с ситуацией, когда это было бы быть вредной вещью.

Я люблю табуляции, но это как-то несовместимо с другим правилом, которое мне нравится:ограничение в 80 столбцов.

Если выбрать табуляцию с 4 пробелами и вставить 10 табуляции, то останется место для 40 символов, чтобы удовлетворить ограничение в 80 столбцов.Если другой программист предпочитает табуляции с 8 пробелами, та же строка будет иметь длину 120 символов и не будет отображаться как допустимая строка из 80 столбцов!

Если вы хотите определить ограничение в 80 столбцов, вам нужно выбрать длину вкладки.В этом случае наличие x пробелов или табуляции длиной x не имеет особого значения.

Редактировать:связанная тема: Сохранение максимальной длины строки при использовании табуляции вместо пробелов?

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

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

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

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

cmd_create_db = '''CREATE TABLE test (
    Col1 INTEGER,
    Col2 INTEGER,
    Col3 TEXT)'''

вы можете увидеть что-то вроде следующего (видно во встроенном терминале Visual Studio Code)...

>>> cmd_create_db = '''CREATE TABLE test (
... .DS_StoreCol1 INTEGER,
... .DS_StoreCol2 INTEGER,
... .DS_StoreCol3 TEXT)'''
>>> cmd_create_db
'CREATE TABLE test (\n.DS_StoreCol1 INTEGER,\n.DS_StoreCol2 INTEGER,\n.DS_StoreCol3 TEXT)'

(В стороне:Я задавался вопросом, не является ли это наблюдение согласованности инструментов признаком проницательного ума проницательного разработчика, стремящегося упорядочить мир, что может указывать на разницу в зарплатах, обнаруженную на Stack Overflow.)

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top