Самодокументация и тесты
План рассказа
- О стиле программирования: имена классов, методов, переменных; пустые строки; порядок (функций в классе, классов в модуле, всего-всего в модуле); длина строк; комментарии; пробелы
- statement vs expression
- Самодокументация
- doctest
Контрольная работа
Опишите функцию enumerate, которая делает то же самое, что и встроенная функция enumerate, не пользуясь встроенной версией enumerate.
Опишите функцию pair_sums, которая получает на вход список чисел и возвращает список попарных сумм соседних элементов списка. Т.е. если на вход подали список [1, 2, 3, 4], то она вернёт [3, 5, 7]
Если питону доступен класс Vector, который мы описывали раньше, что он ответит на такой вопрос:
1 >>> pair_sums([Vector(1,2), Vector(2,1), Vector(1,1)])
Мы можем считать, что класс Vector описан так:
1 class Vector(object):
2 def __init__(self, x, y):
3 self.x, self.y = x, y
4 def __add__(self, other):
5 return Vector(self.x + other.x, self.y + other.y)
6 def __sub__(self, other):
7 return Vector(self.x - other.x, self.y - other.y)
8 def __repr__(self):
9 return "Vector(%s,%s)" % (self.x, self.y)
Задание
- Доделайте задания занятий 2, 3, 4 (!!)
- Допишите документацию к тем местам программы, где она осмысленна
- Среди документации в качестве примеров сделайте тесты
Подсказки
Примерно так выглядит приличный питонский модуль: