In [ ]:
# Правильно
if 1 == 3:
print(1)
if 2 == 3:
print(2)
In [ ]:
# Неверно
if 1 == 3:
print(1)
if 2 == 3:
print(2)
Разделяйте строки на несколько с помощью заключения выражения в скобки. Это способ лучше, чем использование обратного слэша. Делайте соответствующий отступ при переносе. При разбиении строки около бинарного оператора делайте разрыв после него.
In [ ]:
# Правильно
var = (a * 10 +
b / 15)
In [ ]:
# Неверно
var = a * 10 \
+ b / 15
In [ ]:
# Правильно
import math
import sys
In [ ]:
# Неверно
import math, sys
In [ ]:
# Правильно
import sys
N = 5
def f():
pass
In [ ]:
# Неверно
N = 5
import sys
In [ ]:
# Правильно
spam(ham[1], {eggs: 2})
In [ ]:
# Неверно
spam( ham[ 1 ], { eggs: 2 } )
In [ ]:
# Правильно
spam(kind['key'], lst[1:3])
In [ ]:
# Неверно
spam (kind ['key'], lst [1:3])
In [ ]:
# Правильно
if x == 4:
print(x, y); x, y = y, x
In [ ]:
# Неверно
if x == 4 :
print(x , y) ; x , y = y , x
Верно для операторов:
=
, +=
, -=
и т.д.)==
, <
, >
, !=
, <=
, >=
, in
, not in
, is
, is not
)and
, or
, not
)+
, -
, *
, /
, //
и т.д.)
In [ ]:
# Правильно
a == b
a and b
3 + 5 * 8
In [ ]:
# Неверно
a==b
a and b
3+5 * 8
Не располагайте несколько инструкций в одной строке. Разнесите их по разным строкам.
In [ ]:
# Правильно
x = 3
func(10)
In [ ]:
# Неверно
x = 3; func(10)
Не располагайте блок из нескольких инструкций на той же строке сразу после двоеточия (после if
, while
и т.д.)
In [ ]:
# Правильно
if x == 3:
print(x)
In [ ]:
# Неверно
if x == 3: print(x)
Комментарии, противоречащие коду, хуже, чем их отсутствие.
Располагайте однострочные комментарии после кода в той же строке и отделяйте их от кода не менее, чем двумя пробелами. Комментарии должны начинаться с #
и одного пробела.
In [ ]:
# Правильно
a = 5 # правильно оформленный комментарий
In [ ]:
# Неверно
a = 5 #слишком близко и без пробела
Не используйте символы l
, O
, I
как имена переменных. В некоторых шрифтах они очень похожи на цифры.
Имена переменных и функций должны содержать только маленькие буквы. Слова разделяются символами подчёркивания. Не используйте транслит для переменных, называйте их по-английски.
In [ ]:
# Правильно
name, name_from_several_words
In [ ]:
# Неверно
Name, anotheRANDOMname, NAME, imya
Имена констант должны содержать только заглавные буквы. Слова разделяются символами подчёркивания.
In [ ]:
# Правильно
NAME, NAME_FROM_SEVERAL_WORDS
In [ ]:
# Неверно
NAMEFROMSEVERALWORDS, name, Name
Для последовательностей (строк, списков, кортежей) используйте факт, что пустая последовательность эквивалентна False
.
In [ ]:
# Правильно
if lst:
print(lst[0])
In [ ]:
# Неверно
if lst != []:
print(lst[0])
Не проверяйте переменные логического типа на True
и False
используя ==
.
In [ ]:
# Правильно
b = True
if b:
print("Yes")
In [ ]:
# Неверно
b = True
if b == True:
print("No")
Сравнение с None
должно осуществляться с помощью операторов is
и is not
, а не операторами сравнения.
In [ ]:
# Правильно
if a is None:
pass
In [ ]:
# Неверно
if a == None:
pass
Используйте методы .startswith()
и .endswith()
вместо срезов для проверки начала и конца строк.
In [ ]:
# Правильно
s = 'Hello, world!'
if s.startswith('Hello'):
print('Hi')
In [ ]:
# Неверно
s = 'Hello, world!'
if s[:5] == 'Hello':
print('Hi')
Не ставьте пробелы вокруг знака =
при передаче функции именованных аргументов.
In [ ]:
# Правильно
f(5, x=7)
In [ ]:
# Неверно
f(5, x = 7)
Разделяйте определения функций двумя пустыми строками. Тело функции от основной программы также отделяется двумя пустыми строками.
In [ ]:
# Правильно
def f1():
pass
def f2():
pass
pass
In [ ]:
# Неверно
def f1():
pass
def f2():
pass
pass
Разделяйте тело функции на логические части одной пустой строкой.
Перечисленные выше правила имеет смысл нарушать в тех случаях, когда следование им понижает читаемость кода даже для людей, привыкших к этим правилам. Трижды подумайте, прежде чем делать это.