⇤ ← Версия 1 от 2018-09-28 16:10:06
2380
Комментарий:
|
4561
|
Удаления помечены так. | Добавления помечены так. |
Строка 25: | Строка 25: |
* `fun(*seq)`, `fun(a,b,*seq)` * `def fun(*seq):`, `def fun(a,b, *seq):` * всё равно передаётся именно кортеж Генераторы: * Несколько ''разных'' алгоритмов по очереди? * сколько? * интерфейс? * ⇒ ''последовательность'' * Если в коде функции есть `yield`, то она порождает генератор * `next(генератор)` и !StopIteration * Генератор — это последовательность! О решении домашних заданий * Текстовый редактор/IDE/whatever * `idle` (linux: `idle3`) * командная строка `idle3` * vim * geany (не забыть настроить табуляции и `python3` вместо `python`) * WingIDE * Ввод и вывод * Ввод — `input()` (строка ⇒ преобразование типов или `eval(input))`) * Вывод — `print()` * [[http://ejudge.cs.msu.ru/new-client?contest_id=113|Ejudge]] (113-й турнир) * проверка — ввод тестовых входных данных и сопоставление вывода с шаблоном * ⇒ вывод только того, что запрошено, никаких подсказок в `input()` и объяснительных текстов * Типы задач: 1. Написать программу: вводит и выводит 1. Написать функцию (или генератор, или несколько в одном файле): входной тест — это программа, использующая функцию, выходной — текст * Никаких операторов ''вне'' функций, только сами функции 1. Написать класс: входной тест — это программа, использующая класс, выходной — текст * '''Важно''': о «парковке на слух» == Д/З == 1. <<EJCMC(113, HelloWorld, Hello World)>> |
Функции и генераторы
Функции
- Функция Python3 как именованный алгоритм
- Отличие от функции в строгом смысле (преобразование данных определённого типа в данные (другого?) определённого типа)
- функция — это просто объект
правда, он callable() (но бывают и другие callable-объекты)
т. е. объект, который можно вызвать с помощью объект()
Какие callable-объекты нам уже известны (например, типы, bin(), print() и т. п.)
- Задание и вызов функции
- Формат задания функции
- Синтаксически значимый сдвиг
- Формальные и фактические параметры
- Возвращаемое значение функции
Как вернуть два значения?
- Duck typing: все объекты строго типизированы, но по имени этого не скажешь
- ⇒ функция выполнится, если все операции в ней применимы к переданным объектам
- Локальные и глобальные имена, правила видимости
globals() и locals()
- Проблема «побочного эффекта»: разрешать или не разрешать связывание с помощью глобальных имён внутри функции:
- Есть связывание ⇒ имя локальное
global
Строка документации, help(функция)
- Распаковка и запаковка параметров
fun(*seq), fun(a,b,*seq)
def fun(*seq):, def fun(a,b, *seq):
- всё равно передаётся именно кортеж
Генераторы:
Несколько разных алгоритмов по очереди?
- сколько?
- интерфейс?
⇒ последовательность
Если в коде функции есть yield, то она порождает генератор
next(генератор) и StopIteration
- Генератор — это последовательность!
О решении домашних заданий
- Текстовый редактор/IDE/whatever
idle (linux: idle3)
командная строка idle3
- vim
geany (не забыть настроить табуляции и python3 вместо python)
- WingIDE
- Ввод и вывод
Ввод — input() (строка ⇒ преобразование типов или eval(input)))
Вывод — print()
Ejudge (113-й турнир)
- проверка — ввод тестовых входных данных и сопоставление вывода с шаблоном
⇒ вывод только того, что запрошено, никаких подсказок в input() и объяснительных текстов
- Типы задач:
- Написать программу: вводит и выводит
- Написать функцию (или генератор, или несколько в одном файле): входной тест — это программа, использующая функцию, выходной — текст
Никаких операторов вне функций, только сами функции
- Написать класс: входной тест — это программа, использующая класс, выходной — текст
- проверка — ввод тестовых входных данных и сопоставление вывода с шаблоном
Важно: о «парковке на слух»
Д/З
EJudge: HelloWorld 'Hello World'
Написать программу, которая выводит строку Hello, world (в точности)
(ввод не нужен)
Hello, world