Готовый перевод Style Guide for Python Code: Whitespace in Expressions and Statements
Любимые мозоли
Избегайте излишних пробелов в следующих ситуациях:
Прямо внутри круглых, квадратных или фигурных скобок:
Правильно: 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 = 1
y = 2
long_variable = 3
Неправильно:
x = 1
y = 2
long_variable = 3
Другие рекомендации
Всегда окружайте эти двоичные операторы одним пробелом с каждой стороны:
присваивания(=), расширенного присваивания(+=, -= и так далее), сравнения (==,<,>, !=, <>, <=, >=, in, not in, is, is not), логические (and, or, not).
Используйте пробелы вокруг арифметических операторов:
Правильно:
i = i + 1
submitted += 1
x = x * 2 - 1
hypot2 = x * x + y * y
c = (a + b) * (a - b)
Неправильно:
i=i+1
submitted +=1
x = x*2 - 1
hypot2 = x*x + y*y
c = (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()
Если иногда и ничего, что условные операторы if/for/while вместе с небольшим телом программы находятся на одной линии, никогда не делайте так для мультивыражений операторов. Также остерегайтесь складывать такие длинные строчки!
Не делайте так:
if foo == 'blah': do_blah_thing()
for x in lst: total += x
while t < 10: t = delay()
И совсем не надо делать так:
if foo == 'blah': do_blah_thing()
else: do_non_blah_thing()
try: something()
finally: cleanup()
do_one(); do_two(); do_three(long, argument,
list, like, this)
if foo == 'blah': one(); two(); three()
Переведено на Нотабеноиде
http://notabenoid.org/book/1336/5348
Переводчики: wuffur, svartalf
Настройки
Готово:
