Различия между версиями 2 и 3
Версия 2 от 2017-10-13 15:56:12
Размер: 1547
Редактор: FrBrGeorge
Комментарий:
Версия 3 от 2017-10-13 16:25:50
Размер: 2821
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 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 = Если успеем

py2lib:itertools.html

Неполные вычисления (например, с бесконечными итераторами)

Полезности: комбинаторика, повторители, …

Д/З

  • /!\ Прочитать про функции и генераторы

  • Как одним print()-ом вывести несколько объектов Python3 через пробел?

  • Придумать «пример из жизни» для v = yield объект

    • не похоже ли на инициализацию и изменение из канонической схемы цикла?
  • /!\ тупо посчитать определитель (написать функцию)

  • /!\ вводится что-то вроде Mul(Add(2,3),"QQ"), выводится QQQQQQQQQQ

  • /!\ вычисление Пи на скорость (написать генератор)

  • /!\ itertools

LecturesCMC/PythonIntro2017/04_Functions (последним исправлял пользователь FrBrGeorge 2017-10-26 15:48:57)