Различия между версиями 1 и 2
Версия 1 от 2015-03-04 16:22:15
Размер: 3316
Редактор: Class1
Комментарий:
Версия 2 от 2015-03-05 15:22:40
Размер: 4863
Редактор: Class1
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 5: Строка 5:
Ещё раз без спешки: передача функции в качестве параметра (например, `sorted()`/`max()` и `cmp()`/`key()`)
Строка 7: Строка 9:
 * ''JT'': «Побочный эффект» — ересь, мелочь или строгая теория?
Строка 12: Строка 13:
  * `JT`: Краешек бездны: функционалы
  * Краешек оврага: «таблицы эмуляции» и передача функции в качестве параметра (например, `sorted()`/`max()` и `cmp()`/`key()`)
Строка 17: Строка 16:
    * '''BTW''' `dict(key=val, …)`
Строка 19: Строка 19:
  * «Лёгкость» свёртки
Строка 29: Строка 30:
⇒ ''JT'': Отложенные вычисления и… «побочный эффект»
 == Ввод/вывод ==

== Ввод/вывод ==
Строка 41: Строка 42:
/!\ '''TODO''' ЕЩЕ? == Модуль sys и нписание системных сценариев ==
 1. Обращайте внимание на пометку ''Availability:''
 1. Обращайте внимание на пометку ''Deprecated''

[[pydoc:sys.html]]: Связь с системой: свойства самого python:
 * `argv[]`
 * `exit()`
 * `stdin`, `stdout`, `stderr`
 * `getsizeof()`, `max…()`, `getrefcount()`
 * `ps1`, `ps2`
 * …

[[pydoc:os.html]]: Связь с операционной системой и обеспечение (относительной) кроссплатформенности:
 * Системные и другие `libc`-вызовы
  * Параметры процесса: `environ[]`, `chdir()`/`getcwd()`, идентификаторы и флаги
  * Работа с файловым дескриптором вместо файлового объекта
  * Создание/удаление/переименование различных файловых объектов; получение и изменение их свойств
 * Манипуляция с именами файловых объектов ([[pydoc: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)`

[[pydoc:subprocess.html]]/[[pypi:subprocess32]]: Запуск подпроцессов и взаимодействие с ними
/!\ '''TODO''' — достаточно, чтобы написать свой тестер
== Время ==
/!\ '''TODO''' — достаточно, чтобы написать свой тестер

??? /!\ SQL ????
Строка 46: Строка 77:
 * <<Homework(domari:,ExampleTask, Название задачи)>>  * <<Homework(domari:,TaskTester, Тестировщик домашних заданий)>>

Список тем (будет отображаться в календаре)

Длоги за прошлый раз

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

??? /!\ SQL ????

Д/З

Прочитать

  • что-то

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

  • (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)