⇤ ← Версия 1 от 2015-03-02 20:46:22
968
Комментарий:
|
7740
|
Удаления помечены так. | Добавления помечены так. |
Строка 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, …
Д/З
- Прочитать
- Задачи