/CP2020

Primary LanguageJupyter Notebook

Требования к стилю для домашних заданий

Полностью стандартные требования к стилю кода на Python изложены в руководстве PEP8. Мы не будем требовать неукоснительного соблюдения всех требований PEP8, но вам стоит их изучить, если вы планируете профессионально писать код на Python.

В рамках курса к коду, написанному студентами, предъявляется четыре требования по стилю, за несоблюдение которых оценка может быть снижена.

  1. Имена функций и переменных должны быть осмысленными. Например, если функция записывает в строку числитель и знаменатель дроби, вместо
def func1(x,y):
    return str(x) + " / " + str(y)

пишите

def fraction_to_string(num, den):
    return str(num) + " / " + str(den)
  1. Имена переменных, за исключением тривиальных счётчиков, должны быть осмысленными. Если в переменной накапливается сумма квадратов, вместо
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)
  1. Избегайте побочных эффектов функций. В идеале функция должна изменять только переменные внутри своей области видимости. Например, следующий код отлаживать менее удобно:
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. При написании математических формул, используйте пробелы справа и слева от бинарных операций. Операции разного приоритета группируйте для отражения приоритета:
1==(a**2+b**2)/c**2               # плохо
1 == (a ** 2 + b ** 2) / c ** 2   # тоже плохо
1 == (a**2 + b**2) / c**2    # хорошо