Вкладки по сравнению с пробелами в программировании Python

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

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

338
задан Damian Yerrick 25 January 2015 в 17:28
поделиться

12 ответов

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

301
ответ дан cs95 23 November 2019 в 00:37
поделиться

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

0
ответ дан David Locke 23 November 2019 в 00:37
поделиться

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

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

28
ответ дан Greg Hewgill 23 November 2019 в 00:37
поделиться

Большая часть "pythonic" пути состоит в том, чтобы использовать 4 пробелов на уровень отступа. Интерпретатор Python однако распознает пробелы или вкладки. Единственный глюк, Вы никогда не должны смешивать пробелы и вкладки , выбрать один или другой. Однако спецификация рекомендует пробелы, большинство разработчиков использует пробелы, поэтому если у Вас нет действительно серьезного основания не к, я сказал бы, идут с пробелами.

62
ответ дан ctcherry 23 November 2019 в 00:37
поделиться

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

17
ответ дан Rod Daunoravicius 23 November 2019 в 00:37
поделиться

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

12
ответ дан Peter Mortensen 23 November 2019 в 00:37
поделиться

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

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

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

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

9
ответ дан Peter Mortensen 23 November 2019 в 00:37
поделиться

Вы вкладки соединения CAN и пробелы... НО вкладка считается тем же добавлением отступа как 8 пробелов, поэтому если Ваш редактор не настраивается, чтобы полагать, что вкладка 8 пробелов, Вы напрашиваетесь на неприятности при смешивании их.

13
ответ дан Ignacio Vazquez-Abrams 23 November 2019 в 00:37
поделиться

Tired of chasing after indentation typos ( 8 spaces ? no, 7 oops 9 ... ) I switched my sources to 'tabs only'.

1 tab == 1 indent level, full stop

The point is: if you want to display the indentation as 4, 8 or pi / 12 character width, just change the settings in your text editor, don't mess with the code.

(Personally, I use 4 char width tab... but some would prefer 3 or 8 space, or even use variable width fonts.)

454
ответ дан 23 November 2019 в 00:37
поделиться

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

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

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

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

UPDATE: Sublime Text 3 теперь удаляет всю мягкую вкладку клавишей backspace; хотя навигация с помощью клавиш со стрелками по-прежнему утомительна.

Tabs vs. Spaces for Indentation

UPDATE: Теперь я использую vscode, а также написал для него расширение TabSanity, чтобы решить проблемы с backspace, delete и навигацией по клавишам со стрелками.

TabSanity Extension in Action

74
ответ дан 23 November 2019 в 00:37
поделиться

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

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

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

87
ответ дан 23 November 2019 в 00:37
поделиться

Люди будут использовать различных редакторов на том же коде. Эти редакторы представят вкладку на экране по-другому. Если Вы будете работать над редактором, который представляет вкладку как 4 пробелов, если Вы расположите с отступом первую строку "\t " и второе "\t\t", они будут похожи, они находятся на том же уровне отступа: 8 пробелов.

интерпретатор Python не знает Вашего редактора, и он должен интерпретировать вкладку как некоторый объем добавления отступа. На самом деле это интерпретирует вкладку как 8 пробелов, таким образом, это будет видеть различные уровни отступа, чем, что Вы предназначили: 12 пробелов для первой строки, 16 пробелов для второго. Вы поджарены.

0
ответ дан Peter Mortensen 23 November 2019 в 00:37
поделиться
Другие вопросы по тегам:

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