Есть ли способ обойти кодирование в Python без критериев табуляции, отступа и пробела? - PullRequest
7 голосов
/ 15 сентября 2008

Я хочу начать использовать Python для небольших проектов, но тот факт, что неправильно расположенная вкладка или отступ может вызвать ошибку компиляции, действительно действует мне на нервы. Есть какие-то настройки, чтобы отключить это?

В настоящее время я использую NotePad ++. Может быть, есть IDE, которая позаботится о вкладках и отступах?

Ответы [ 29 ]

2 голосов
/ 15 сентября 2008

Вы должны отключить символы табуляции в вашем редакторе, когда вы работаете с Python (всегда, на самом деле, IMHO, но особенно когда вы работаете с Python). Поищите опцию типа «Использовать пробелы для вкладок»: любой приличный редактор должен иметь такую ​​возможность.

2 голосов
/ 15 сентября 2008

Я не верю в это, так как Python - это язык, разделенный пробелами. Возможно, поможет текстовый редактор или IDE с авто-отступом. Что вы сейчас используете?

2 голосов
/ 15 сентября 2008

Мне трудно понять, когда люди отмечают это как проблему с Python. Я сразу понял это и обнаружил, что это одна из моих любимых «особенностей» языка:)

На других языках у меня есть две работы: 1. Исправьте скобки, чтобы компьютер мог разобрать мой код 2. Исправьте отступ, чтобы я мог разобрать свой код.

Так что в Python мне вдвое меньше беспокойства; -)

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

1 голос
/ 15 сентября 2008

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

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

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

1 голос
/ 15 сентября 2008

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

Вы можете завершить операторы с помощью ;, а затем начать новый оператор в той же строке. (Что люди часто делают, когда играют в гольф.)

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

Мой совет: не используйте вкладки, если у вас есть путаница с табуляцией / пробелами. Используйте пробелы и выберите 2 или 3 пробела в качестве уровня отступа.

Хороший редактор сделает это, так что вам не нужно об этом беспокоиться. (Python-режим для emacs, , например, вы можете просто использовать клавишу табуляции, и это будет держать вас честно).

1 голос
/ 08 октября 2009

Я удивлен, что никто не упомянул IDLE как хороший редактор Python по умолчанию. Хороший синтаксис цветов, обрабатывает отступы, имеет intellisense, легко настроить шрифты, и он поставляется с загрузкой по умолчанию Python. Черт, я пишу в основном IronPython, но его так легко и просто редактировать в IDLE и запускать ipy из командной строки.

О, а что за пустые места? Легче всего читать C или C # с отступами, а Python просто устанавливает действительно простое правило форматирования.

1 голос
/ 16 сентября 2008

Если вы не хотите использовать IDE / текстовый редактор с автоматическим отступом, вы можете использовать скрипт pindent.py, который находится в каталоге Tools \ Scripts. Это препроцессор, который может конвертировать код как:

def foobar(a, b):
if a == b:
a = a+1
elif a < b:
b = b-1
if b > a: a = a-1
end if
else:
print 'oops!'
end if
end def foobar

в

def foobar(a, b):
   if a == b:
       a = a+1
   elif a < b:
       b = b-1
       if b > a: a = a-1
       # end if
   else:
       print 'oops!'
   # end if
# end def foobar

Какой действительный питон.

1 голос
/ 15 сентября 2008

Если вы ищете рекомендацию для Python IDE, после всесторонних исследований мне больше всего по душе Wing Software от Wing Software:

http://www.wingware.com/products

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

Мне также очень нравится SciTE, это абсолютно бесплатно, бесплатно, бесплатно!

http://scintilla.sourceforge.net/SciTEDownload.html

0 голосов
/ 04 октября 2009

Да, есть способ. Я ненавижу эти ответы "нет пути", нет пути, пока ты не найдешь один.

И в этом случае, что бы это ни стоило, есть одно.

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

Основные приемы: всегда использование return в конце функции, всегда использование pass в конце if или в конце определение класса, и всегда используйте continue в конце while. Конечно, любая другая инструкция без эффекта будет соответствовать цели.

Затем простой скрипт awk может взять ваш код и определить конец блока, прочитав инструкции pass / continue / return, а также начало кода с инструкциями if / def / while / ... .

Конечно, поскольку вы разработаете свой скрипт отступа, вы увидите, что вам не нужно использовать continue после возврата внутри if, потому что return вызовет механизм отступа-возврата. То же самое относится и к другим ситуациям. Просто привыкните к этому.

Если вы прилежны, вы сможете вырезать / вставлять и добавлять / удалять if и автоматически исправлять отступы. И, кстати, для вставки кода из Интернета вам потребуется немного понять его, чтобы вы могли адаптировать его к этому «неклассическому» параметру.

0 голосов
/ 23 сентября 2008

Нет, нет никакого способа обойти это, и это по замыслу:

>>> from __future__ import braces
  File "<stdin>", line 1
SyntaxError: not a chance

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...