Различия между версиями 1 и 2
Версия 1 от 2015-03-02 20:46:22
Размер: 968
Редактор: localhost
Комментарий:
Версия 2 от 2015-03-03 22:49:23
Размер: 7740
Редактор: localhost
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 1: Строка 1:
= Список тем (будет отображаться в календаре) =
Остатки от прошлой лекции:
= Функции и итераторы; словари, множества; =
==Остатки от прошлой лекции ==
Строка 6: Строка 6:
(неизвестно, на этот ли раз). Неявная динамическая типизация в Python Неявная динамическая типизация в Python
Строка 11: Строка 11:
== Скалярные типы данных ==
 * Целые и длинные целые
 * Вещественные и комплексные числа
  * о несуществовании вещественных чисел в цифровых ЭВМ (`2.2 + 3.3`)
  * ⇒ модули `decimal`, `fractions`
  * модуль [[pydoc:random.html|random]] и его возможности
 * Булевский и типы-объекты (None, !NotImplemented, Ellipsis и т. п.)
== Последовательности ==
(в основном были на прошлом занятии)
 * Кортежи (константные списки)
  * со скобками и без, с запятой в конце и без неё
  * кортеж в левой части присваивания и цикла `for`
  * секционирование последовательностей на примере кортежей
   * отрицательные значения и умолчания
  * методы: `count` и `index`; функция `len()`, операция `in`
  * перечисления и многоточие (Ellipsis) — для пользовательских объектов
 * Списки
  * принципиальное отличие изменяемых структур от неизменяемых: `non-hashable`, /!\ скорость?
  * секция в левой части присваивания
  * методы `append`/`pop`/`extend`; `insert`/`remove`; `reverse`/`sort`
  * выражение-генератор списка
   * вложенное выражение-генератор (например, `[x*y for x in xrange(5) for y in xrange(x)]`)
 * Строки
  * ''много'' методов
  * модификатор `r"`
 * Проблема UTF и Unicode-строки
 * `bytearray`, список однобайтовых целых, он же ''изменяемая'' строка
 * `xrange`
== Строки ==
 * двойственная сущность строки как константной последовательности однобуквенных строк же (`.index()`, `.count()`, ` in ` и т. п. работают по подстрокам)
 * четыре способа закавычить строку
 * Строковые методы
  * Полезные и не очень (обзор)
  * Разбор ввода и склейка вывода с помощью `.split()` и `.join()`
 * Форматирование строки с помощью `.format()`
  * Старый C-like стиль: `строка%послдедовательность`
 * Кодировка, строки, u-строки и их преобразование
  * ''однобайтовый'' UTF в Python2
  * `chr()`/`ord()`
  * `unicode()` (нужна кодировка), обратное (используется LOCALE)
  * `# coding: UTF` в файле
== Множества ==
 * `set()` и `frozenset()`
 * Выражение-генератор множества
== Словари ==
 * Хешируемые объекты и (видимо) поиск по хешу ⇒ хеш == индекс словаря
  * ⇒ не требуется сохранение порядка
 * Задание словаря
  * в виде `{ключ:значение, …}`
  * в виде циклического конструктора типа `{выражение:выражение for имя in последовательность}`
  * с помощью именованных параметров функции: `dict(key=val, …)` (см. далее)
  * из списка пар `dict(список_пар)`
   * '''BTW''': функции `zip()` и `enumerate()`
 * `Dict[key]` и `Dict[key]=значение`: автодобавление ключа
 * итератор и проверка `in` по ключу
 * `keys()`/`values()`/`items()`
  * '''BTW''' типы `view<что-нибудь>`, например, `viewkeys()` (поддерживает алгебру множеств)
 * `pop()`, `popitem()`; `update()`, `get()` и `sedtefault()`
 * ''JT'': В питоне вообще много сделано на словарях

== Функции ==
 * ''JT'': «Побочный эффект» — ересь, мелочь или строгая теория?
 * Вызываемый объект «`fun(arg1, arg2, ...)` is a shorthand for `fun.__call__(arg1, arg2, ...)`»
  * Передача по ссылке (википедия: [[RW:Стратегия_вычисления#.D0.92.D1.8B.D0.B7.D0.BE.D0.B2_.D0.BF.D0.BE_.D1.81.D0.BE.D0.B8.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D1.8E_.28call_by_sharing.29|по соиспользованию]])
  * Отсутствие проверки вплоть до вызова (динамическая типизация)
  * Пространство имён и локальные переменные
   * Локальность переменных (по первой встрече в LHS или RHS), `global`
  * Умолчания для параметров (присваивание во время определения) и пропуск параметров
   * ⇒ Позиционные и именованные параметры
  * Строки документации
 * Функции-выражения (`lambda`)
  * `JT`: Краешек бездны: функционалы
  * Краешек оврага: «таблицы эмуляции» и передача функции в качестве параметра (например, `sorted()`/`max()` и `cmp()`/`key()`)
 * Свёртка позиционных и именованных параметров
  * `*` и `**` в списке формальных параметров
  * `*` и `**` при вызове функции
  * ⇒ переменное количество параметров
  * ⇒ произвольные (!) именованные параметры
== Ввод/вывод ==
 * Потоковый
  * Файловые объекты: `open()`, `close()`, `read()`, `write()`, `readline()` и итератор
  * Типизированные файлы: модуль [[pydoc:struct.html]]
 * Сериализация: [[pydoc:json.html]] и [[pydoc:pickle.html]]
  * методы `.dunp()` и `.load()`
  * `pickle` умеет объекты!
  * `json` умеет не все hashable объекты в индексах
 * Индексированны доступ (БД): [[pydoc:anydbm.html]]
  * `dict`-интерфейс
 * Спецфайлы: [[pydoc:zipfile.html]], [[pydoc:json.html]], [[pydoc:configparser.html]], …

Функции и итераторы; словари, множества;

==Остатки от прошлой лекции ==

Интерактивная HTML-документация

Неявная динамическая типизация в Python

  • Любые функции (методы) применимы к любым объектам
    • Если в процессе выполнения происходит обращение к несуществующему объекту (полю), активизируется исключение
  • Проверка существования объекта (поля) происходит в момент обращения к енму
  • Все операции над объектами (типа +, [ , () и т. п.) — спецметоды объектов

Скалярные типы данных

  • Целые и длинные целые
  • Вещественные и комплексные числа
    • о несуществовании вещественных чисел в цифровых ЭВМ (2.2 + 3.3)

    • ⇒ модули decimal, fractions

    • модуль random и его возможности

  • Булевский и типы-объекты (None, NotImplemented, Ellipsis и т. п.)

Последовательности

(в основном были на прошлом занятии)

  • Кортежи (константные списки)
    • со скобками и без, с запятой в конце и без неё
    • кортеж в левой части присваивания и цикла for

    • секционирование последовательностей на примере кортежей
      • отрицательные значения и умолчания
    • методы: count и index; функция len(), операция in

    • перечисления и многоточие (Ellipsis) — для пользовательских объектов
  • Списки
    • принципиальное отличие изменяемых структур от неизменяемых: non-hashable, /!\ скорость?

    • секция в левой части присваивания
    • методы append/pop/extend; insert/remove; reverse/sort

    • выражение-генератор списка
      • вложенное выражение-генератор (например, [x*y for x in xrange(5) for y in xrange(x)])

  • Строки
    • много методов

    • модификатор r"

  • Проблема UTF и Unicode-строки
  • bytearray, список однобайтовых целых, он же изменяемая строка

  • xrange

Строки

  • двойственная сущность строки как константной последовательности однобуквенных строк же (.index(), .count(),  in  и т. п. работают по подстрокам)

  • четыре способа закавычить строку
  • Строковые методы
    • Полезные и не очень (обзор)
    • Разбор ввода и склейка вывода с помощью .split() и .join()

  • Форматирование строки с помощью .format()

    • Старый C-like стиль: строка%послдедовательность

  • Кодировка, строки, u-строки и их преобразование
    • однобайтовый UTF в Python2

    • chr()/ord()

    • unicode() (нужна кодировка), обратное (используется LOCALE)

    • # coding: UTF в файле

Множества

  • set() и frozenset()

  • Выражение-генератор множества

Словари

  • Хешируемые объекты и (видимо) поиск по хешу ⇒ хеш == индекс словаря
    • ⇒ не требуется сохранение порядка
  • Задание словаря
    • в виде {ключ:значение, …}

    • в виде циклического конструктора типа {выражение:выражение for имя in последовательность}

    • с помощью именованных параметров функции: dict(key=val, …) (см. далее)

    • из списка пар dict(список_пар)

      • BTW: функции zip() и enumerate()

  • Dict[key] и Dict[key]=значение: автодобавление ключа

  • итератор и проверка in по ключу

  • keys()/values()/items()

    • BTW типы view<что-нибудь>, например, viewkeys() (поддерживает алгебру множеств)

  • pop(), popitem(); update(), get() и sedtefault()

  • JT: В питоне вообще много сделано на словарях

Функции

  • JT: «Побочный эффект» — ересь, мелочь или строгая теория?

  • Вызываемый объект «fun(arg1, arg2, ...) is a shorthand for fun.__call__(arg1, arg2, ...)»

    • Передача по ссылке (википедия: по соиспользованию)

    • Отсутствие проверки вплоть до вызова (динамическая типизация)
    • Пространство имён и локальные переменные
      • Локальность переменных (по первой встрече в LHS или RHS), global

    • Умолчания для параметров (присваивание во время определения) и пропуск параметров
      • ⇒ Позиционные и именованные параметры
    • Строки документации
  • Функции-выражения (lambda)

    • JT: Краешек бездны: функционалы

    • Краешек оврага: «таблицы эмуляции» и передача функции в качестве параметра (например, sorted()/max() и cmp()/key())

  • Свёртка позиционных и именованных параметров
    • * и ** в списке формальных параметров

    • * и ** при вызове функции

    • ⇒ переменное количество параметров
    • ⇒ произвольные (!) именованные параметры

Ввод/вывод

  • Потоковый
    • Файловые объекты: 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, …

Д/З

  • Прочитать
  • Задачи


CategoryClass

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