Требования к стилю для домашних заданий
Полностью стандартные требования к стилю кода на Python изложены в руководстве PEP8. Мы не будем требовать неукоснительного соблюдения всех требований PEP8, но вам стоит их изучить, если вы планируете профессионально писать код на Python.
В рамках курса к коду, написанному студентами, предъявляется четыре требования по стилю, за несоблюдение которых оценка может быть снижена.
- Имена функций и переменных должны быть осмысленными. Например, если функция записывает в строку числитель и знаменатель дроби, вместо
def func1(x,y):
return str(x) + " / " + str(y)
пишите
def fraction_to_string(num, den):
return str(num) + " / " + str(den)
- Имена переменных, за исключением тривиальных счётчиков, должны быть осмысленными. Если в переменной накапливается сумма квадратов, вместо
s = 0
for i in range(10):
s += i**2
пишите
sum_squares = 0
for i in range(10):
sum_squares += i**2
Обозначение i
для счётчика цикла общепринято.
3. Повторяющиеся блоки кода выделяйте в отдельные именованные функции. Например, вместо
dist1 = (x1 ** 2 + y1 ** 2) ** 0.5
dist2 = (x2 ** 2 + y2 ** 2) ** 0.5
выделяйте функцию
def distance(x, y):
return (x ** 2 + y ** 2) ** 0.5
dist1 = distance(x1, y1)
dist2 = distance(x2, y2)
- Избегайте побочных эффектов функций. В идеале функция должна изменять только переменные внутри своей области видимости. Например, следующий код отлаживать менее удобно:
count = 0
sum = 0
def count_and_sum(x):
count += 1
sum += x
print count, sum
а удобнее отлаживать код, в котором функция явно возвращает эти значения:
def count_and_sum(x, prev_count, prev_sum):
return prev_count + 1, prev_sum + x
- При написании математических формул, используйте пробелы справа и слева от бинарных операций. Операции разного приоритета группируйте для отражения приоритета:
1==(a**2+b**2)/c**2 # плохо
1 == (a ** 2 + b ** 2) / c ** 2 # тоже плохо
1 == (a**2 + b**2) / c**2 # хорошо