5134
Комментарий:
|
5215
|
Удаления помечены так. | Добавления помечены так. |
Строка 79: | Строка 79: |
* что-то | * /!\ что-то |
Строка 82: | Строка 82: |
Более подробная формулировка по ссылке. |
Список тем (будет отображаться в календаре)
Длоги за прошлый раз
Хешируемое константное множество frozenset
Ещё раз без спешки: передача функции в качестве параметра (например, sorted()/max() и cmp()/key())
Разбор домашних заданий
Функции (продолжение)
Вызываемый объект «fun(arg1, arg2, ...) is a shorthand for fun.__call__(arg1, arg2, ...)»
- Умолчания для параметров (присваивание во время определения) и пропуск параметров
- ⇒ Позиционные и именованные параметры
Функции-выражения (lambda)
- Свёртка позиционных и именованных параметров
* и ** в списке формальных параметров
* и ** при вызове функции
BTW dict(key=val, …)
- ⇒ переменное количество параметров
⇒ произвольные именованные параметры
- «Лёгкость» свёртки
Рекурсия. Оценка необходимости рекурсии. Гвидо и хвостовая рекурсия.
Генераторы
Объекты-итераторы iter() из коллекции (.__iter__()) или из последовательности (.__getitem__())
.next() и StopIteration
Работа цикла for
- Выражения-генераторы: для цикла лучше списков, но «одноразовые, что твои спорт-байкеры»
Генераторы: функции с yield вместо return
Параметрические: .send(par) вместо .next() ( ⇒ par = yield)
Управление: .close() и .throw(исключение)
Ввод/вывод
- Потоковый
Файловые объекты: open(), close(), read(), write(), readline() и итератор
Типизированные файлы: модуль struct.html
Сериализация: json.html и pickle.html
методы .dunp() и .load()
pickle умеет объекты!
json умеет не все hashable объекты в индексах
Индексированны доступ (БД): anydbm.html
dict-интерфейс
Спецфайлы: zipfile.html, json.html, configparser.html, …
Модуль sys и нписание системных сценариев
Обращайте внимание на пометку Availability:
Обращайте внимание на пометку Deprecated
sys.html: Связь с системой: свойства самого python:
argv[]
exit()
stdin, stdout, stderr
getsizeof(), max…(), getrefcount()
ps1, ps2
- …
os.html: Связь с операционной системой и обеспечение (относительной) кроссплатформенности:
Системные и другие libc-вызовы
Параметры процесса: environ[], chdir()/getcwd(), идентификаторы и флаги
- Работа с файловым дескриптором вместо файлового объекта
- Создание/удаление/переименование различных файловых объектов; получение и изменение их свойств
Манипуляция с именами файловых объектов (os.path.html)
- Из используемого:
os.pipe(), os.tmpfile()
os.listdir(path)/os.makedirs(path[, mode])/os.removedirs(path)
os.stat(path), os.times()
os.urandom(n)
subprocess.html/subprocess32: Запуск подпроцессов и взаимодействие с ними TODO — достаточно, чтобы написать свой тестер
Время
TODO — достаточно, чтобы написать свой тестер
Сравнение версий
Д/З
Прочитать
что-то
Задачи и упражнения
(domari:TaskTester) Тестировщик домашних заданий
Первая строка ввода — имя файла, содержащего программу на Python; в каждой паре последующих — имя файла с входными даннми и имя файла с эталонными выходными данными. Запустить введённую программу, передав ей на стандартный ввод входные данные, получить от неё вывод (стандартный вывод ошибок игнорировать) и сравнить его с эталоном. Вывести общее количество запусков и количество «успешных» запусков, вывод которых совпал с эталоном. Любую другую информацию можно выводить на стандартный вывод ошибок (sys.stderr).
DummyTest.py 001.dat 001.ans 002.dat 002.ans 003.dat 003.ans
2/3
- Более подробная формулировка по ссылке.