Различия между версиями 3 и 4
Версия 3 от 2015-03-05 15:48:00
Размер: 5134
Редактор: Class1
Комментарий:
Версия 4 от 2015-03-05 15:52:14
Размер: 5215
Редактор: Class1
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 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 и нписание системных сценариев

  1. Обращайте внимание на пометку Availability:

  2. Обращайте внимание на пометку 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 — достаточно, чтобы написать свой тестер

Сравнение версий

  • Posix diff

  • Сравнение версий и VCS (на примере git diff)

  • Модуль difflib

Д/З

Прочитать

  • /!\ что-то

Задачи и упражнения

  • (domari:TaskTester) Тестировщик домашних заданий

    Первая строка ввода — имя файла, содержащего программу на Python; в каждой паре последующих — имя файла с входными даннми и имя файла с эталонными выходными данными. Запустить введённую программу, передав ей на стандартный ввод входные данные, получить от неё вывод (стандартный вывод ошибок игнорировать) и сравнить его с эталоном. Вывести общее количество запусков и количество «успешных» запусков, вывод которых совпал с эталоном. Любую другую информацию можно выводить на стандартный вывод ошибок (sys.stderr).

    Input:

    DummyTest.py
    001.dat
    001.ans
    002.dat
    002.ans
    003.dat
    003.ans
    Output:

    2/3
    • Более подробная формулировка по ссылке.


CategoryClass

Lectures/PythonIntro/2015-03-10 (последним исправлял пользователь Class1 2015-03-11 10:04:53)