Пробелы в выражениях и инструкциях
Избегайте использования пробелов в следующих ситуациях:
· Непосредственно внутри круглых, квадратных или фигурных скобок.
Правильно:
spam(ham[1], {eggs: 2})Неправильно:
spam( ham[ 1 ], { eggs: 2 } )· Непосредственно перед запятой, точки с запятой или двоеточием:
Правильно:
if x == 4: print(x, y); x, y = y, xНеправильно:
if x == 4 : print(x , y) ; x , y = y , x· Сразу перед открывающей скобкой, после которой начинается список аргументов при вызове функции:
Правильно:
spam(1)Неправильно:
spam (1)· Сразу перед открывающей скобкой, после которой следует индекс или срез:
Правильно:
dict['key'] = list[index]Неправильно:
dict ['key'] = list [index]· Использование более одного пробела вокруг оператора присваивания (или любого другого) для того, чтобы выровнять его с другим:
Правильно:
x = 1y = 2long_variable = 3Неправильно:
x = 1y = 2long_variable = 3Другие рекомендации
· Всегда окружайте эти бинарные операторы одним пробелом с каждой стороны: присваивания (=, +=, -= и другие), сравнения (==, <, >, !=, <>, <=, >=, in, not in, is, is not), логические (and, or, not).
· Если используются операторы с разными приоритетами, попробуйте добавить пробелы вокруг операторов с самым низким приоритетом. Используйте свои собственные суждения, однако, никогда не используйте более одного пробела, и всегда используйте одинаковое количество пробелов по обе стороны бинарного оператора.
Правильно:
i = i + 1submitted += 1x = x*2 - 1hypot2 = x*x + y*yc = (a+b) * (a-b)Неправильно:
i=i+1submitted +=1x = x * 2 - 1hypot2 = x * x + y * yc = (a + b) * (a - b)· Не используйте пробелы вокруг знака =, если он используется для обозначения именованного аргумента или значения параметров по умолчанию.
Правильно:
def complex(real, imag=0.0): return magic(r=real, i=imag)Неправильно:
def complex(real, imag = 0.0): return magic(r = real, i = imag)· Не используйте составные инструкции (несколько команд в одной строке).
Правильно:
if foo == 'blah': do_blah_thing()do_one()do_two()do_three()Неправильно:
if foo == 'blah': do_blah_thing()do_one(); do_two(); do_three()· Иногда можно писать тело циклов while, for или ветку if в той же строке, если команда короткая, но если команд несколько, никогда так не пишите. А также избегайте длинных строк!
Точно неправильно:
if foo == 'blah': do_blah_thing()for x in lst: total += xwhile t < 10: t = delay()
Вероятно, неправильно:
Комментарии
Комментарии, противоречащие коду, хуже, чем отсутствие комментариев. Всегда исправляйте комментарии, если меняете код!
Комментарии должны являться законченными предложениями. Если комментарий — фраза или предложение, первое слово должно быть написано с большой буквы, если только это не имя переменной, которая начинается с маленькой буквы (никогда не изменяйте регистр переменной!).
Если комментарий короткий, можно опустить точку в конце предложения. Блок комментариев обычно состоит из одного или более абзацев, составленных из полноценных предложений, поэтому каждое предложение должно оканчиваться точкой.
Ставьте два пробела после точки в конце предложения.
Программисты, которые не говорят на английском языке, пожалуйста, пишите комментарии на английском, если только вы не уверены на 120%, что ваш код никогда не будут читать люди, не знающие вашего родного языка.
Блоки комментариев
Блок комментариев обычно объясняет код (весь, или только некоторую часть), идущий после блока, и должен иметь тот же отступ, что и сам код. Каждая строчка такого блока должна начинаться с символа # и одного пробела после него (если только сам текст комментария не имеет отступа).
Абзацы внутри блока комментариев разделяются строкой, состоящей из одного символа #.
"Встрочные" комментарии
Старайтесь реже использовать подобные комментарии.
Такой комментарий находится в той же строке, что и инструкция. "Встрочные" комментарии должны отделяться по крайней мере двумя пробелами от инструкции. Они должны начинаться с символа # и одного пробела.
Комментарии в строке с кодом не нужны и только отвлекают от чтения, если они объясняют очевидное. Не пишите вот так:
x = x + 1 # Increment xВпрочем, такие комментарии иногда полезны:
x = x + 1 # Компенсация границыСтроки документации
· Пишите документацию для всех публичных модулей, функций, классов, методов. Строки документации необязательны для приватных методов, но лучше написать, что делает метод. Комментарий нужно писать после строки с def.
· PEP 257 объясняет, как правильно и хорошо документировать. Заметьте, очень важно, чтобы закрывающие кавычки стояли на отдельной строке. А еще лучше, если перед ними будет ещё и пустая строка, например:
· """Return a foobang· · Optional plotz says to frobnicate the bizbaz first.· · """· Для однострочной документации можно оставить закрывающие кавычки на той же строке.
Контроль версий
Если вам нужно использовать Subversion, CVS или RCS в ваших исходных кодах, делайте вот так:
__version__ = "$Revision: 1a40d4eaa00b $"# $Source$Вставляйте эти строки после документации модуля перед любым другим кодом и отделяйте их пустыми строками по одной до и после.