Использовать «пробелы» или «табуляции» только в файлах Python? - PullRequest
4 голосов
/ 22 марта 2010

Есть ли в Python способ принудительного использования отступов пробелов или табуляций для каждого файла?

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

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

Редактировать: Хорошо, мой вопрос не был ясен, я спрашиваю об этом, потому что я продолжаю получать исправления и исправления в любой комбинации табуляции / пространства, которую вы можете себе представить.Я использую Mercurial в качестве DVCS, возможно, что-то существует на этом уровне?

Ответы [ 4 ]

10 голосов
/ 22 марта 2010

Тим Питерс написал изящный скрипт с именем reindent.py , который преобразует файлы .py для использования отступов в 4 пробела и без вкладок. Он доступен здесь , но сначала проверьте ваш дистрибутив - возможно, он входит в каталог примеров или инструментов. (В последней версии LTS Ubuntu он предоставляется пакетом python2.7-examples.)

Если вы можете настроить перехват Mercurial, вы сможете запускать все файлы через reindent.py.

Кстати, если вы используете unix, то ваша система также может иметь команду expandunexpand), которая преобразует все табуляции в пробелы (и пробелы в табуляции). Однако в этом случае, я думаю, reindent.py - правильный инструмент.

5 голосов
/ 22 марта 2010

Посмотрите на модуль tabnanny: - Обнаружение неоднозначного отступа.

2 голосов
/ 22 марта 2010

Как указано в PEP 8 , никогда не смешивайте табуляцию и пробел.Тем не менее, файл с обоими может просто запуститься ... Как там сказано:

The most popular way of indenting Python is with spaces only.  The
second-most popular way is with tabs only.  Code indented with a mixture
of tabs and spaces should be converted to using spaces exclusively.
When invoking the Python command line interpreter with the -t option, it issues
warnings about code that illegally mixes tabs and spaces.  When using -tt
these warnings become errors.  These options are highly recommended!

, поэтому решение заключается в использовании по умолчанию:

python -t my_mixed_code.py

Чтобы ответить на уровне редактора, это зависит от редактора, пожалуйста, укажите!

2 голосов
/ 22 марта 2010

Это то, что ваш редактор должен сделать для вас. Большинство редакторов (например, попробуйте Notepad ++, это бесплатно) позволяют указать, будет ли нажатие клавиши табуляции вводить символ табуляции или количество пробелов. Я бы рекомендовал использовать два пробела вместо табуляции во всех файлах (я считаю, 4 слишком много). Лучше использовать пробелы вместо вкладок, так как это означает, что вы можете делать отступы, используя клавиши пробела и табуляции, не беспокоясь о том, чтобы испортить ваши файлы.

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

...