Который предпочтен ("". указание на пробел)?
A)
def foo():
x = 1
y = 2
....
if True:
bar()
B)
def foo():
x = 1
y = 2
if True:
bar()
Моя интуиция была бы B (это также, что энергия делает для меня), но я вижу, что люди используют A) все время. Это просто, потому что большинство редакторов там повреждается?
PEP 8 кажется неясным по этому вопросу, хотя утверждения о «пустых строках» можно интерпретировать в пользу B. Средство проверки стиля PEP 8 (pep8.py) предпочитает B и предупреждает, если вы используете A; однако оба варианта допустимы. Я считаю, что, поскольку Python будет успешно интерпретировать код в любом случае, это не имеет особого значения, и попытка его применения потребует много работы с очень небольшой выгодой. Я полагаю, если вы решительно поддерживаете одно или другое, вы могли бы автоматически преобразовать одно в другое. Попытка исправить все такие строки вручную, однако, была бы огромным делом и действительно не стоила усилий, ИМХО.
Emacs делает B) за меня, но я действительно не думаю, что это имеет значение. A) означает, что вы можете добавить строку с правильным отступом без табуляции.
Эта пустая строка принадлежит foo ()
, поэтому я считаю A
наиболее естественным. Но я думаю, это всего лишь вопрос мнения.
TextMate прерывает свертывание блоков, если вы используете B, и я все равно предпочитаю A, поскольку это более «логично».
Я бы не стал называть первый пример "сломанным", потому что я знаю, что некоторые люди ненавидят, когда курсор "прыгает назад" при перемещении курсора вверх или в коде. Например. Visual Studio (по крайней мере, 2008) автоматически предотвращает это без использования каких-либо пробелов в этих строках.
Если вы используете A , вы можете скопировать и вставить свой блок в оболочке python, B получит неожиданный отступ ошибка.
Мой опыт разработки с открытым исходным кодом показывает, что никогда не следует оставлять пробелы внутри пустых строк. Также никогда не следует оставлять конечное белое пространство.
Это вопрос этикета кодирования.