1547
Комментарий:
|
2821
|
Удаления помечены так. | Добавления помечены так. |
Строка 5: | Строка 5: |
Условное выражение `A if C else B` |
|
Строка 8: | Строка 10: |
* `range()`, `reversed()`, `enumerate()` | * `range()`, `reversed()`, `enumerate()`, `zip()` Кстати, `zip()` не было, а зря! |
Строка 13: | Строка 16: |
* Задание функции: формальные и фактические параметры | * Задание функции: формальные и фактические параметры, `return` |
Строка 16: | Строка 19: |
* определение локальности, `global` ---- '''TODO''' |
* определение локальности по связыванию, `global` * `nonlocal` для вложенных функций * функция как объект: именование, передача в качестве параметра * лямбда-функции (функции-выражения) |
Строка 20: | Строка 24: |
== Генераторы == == Itertools = Если успеем ---- Распаковка и запаковка последовательностей |
=== Распаковка и запаковка последовательностей === |
Строка 32: | Строка 28: |
* распаковка * запаковка * функция с произвольным числом параметров == Генераторы == Повторно-входимые функции as is Pуthon3: генераторы * Задание: `yield` * Принцип работы * это же итератор! Параметрические итераторы: * `a = yield b`, первый `p0 = next(gen)`, дальше `pk = gen.send(a)` == Itertools = ''Если успеем'' [[py2lib:itertools.html]] Неполные вычисления (например, с бесконечными итераторами) Полезности: комбинаторика, повторители, … |
|
Строка 36: | Строка 55: |
* Придумать «пример из жизни» для `v = yield объект` * не похоже ли на инициализацию и изменение из канонической схемы цикла? |
Функции и генераторы
Разбор Д/З №1
Условное выражение A if C else B
Цикл for: повторение
iter(объект) → объект-итератор (.__getitem__() или .__iter__())
next() и StopIteration
range(), reversed(), enumerate(), zip()
Кстати, zip() не было, а зря!
Функции
Пространства имён: повторение
Задание функции: формальные и фактические параметры, return
Duck typing: функция как формализация алгоритма
функция как локальное пространство имён
определение локальности по связыванию, global
nonlocal для вложенных функций
- функция как объект: именование, передача в качестве параметра
- лямбда-функции (функции-выражения)
Распаковка и запаковка последовательностей
- при связывании
в цикле for
- при передаче параметров в функцию
- распаковка
- запаковка
- функция с произвольным числом параметров
Генераторы
Повторно-входимые функции as is
Pуthon3: генераторы
Задание: yield
- Принцип работы
- это же итератор!
Параметрические итераторы:
a = yield b, первый p0 = next(gen), дальше pk = gen.send(a)
== Itertools = Если успеем
Неполные вычисления (например, с бесконечными итераторами)
Полезности: комбинаторика, повторители, …
Д/З
Прочитать про функции и генераторы
Как одним print()-ом вывести несколько объектов Python3 через пробел?
Придумать «пример из жизни» для v = yield объект
- не похоже ли на инициализацию и изменение из канонической схемы цикла?
тупо посчитать определитель (написать функцию)
вводится что-то вроде Mul(Add(2,3),"QQ"), выводится QQQQQQQQQQ
вычисление Пи на скорость (написать генератор)
itertools