Командная строка и объекты
Интерпретатор командной строки
- Командная строка как общий принцип интерфейса - Диалог «команда — ответ…» - Точнее: ввод → синтаксический анализ → интерпретация → вывод → …
- Совмещение потока данных и потока управления
 
- Редактор: подсказка, история, достраивание, поиск по истории
 
- Диалог «команда — ответ…» 
- Python3: - консольный (классика) - Настройка, файл (~/.pythonstartup ) 
 
- idle / pycrust / встроенные в IDE
- bpython / ipython / …
 
- консольный (классика) 
- Синтаксические ошибки / ошибки времени выполнения
Объекты и выражения с ними
- Целые, вещественные и комплексные числа - длинные целые
- проблема представления вещественных - забегая вперёд: fractions.Decimal: и fractions.Fraction 
 
 
- Строки
- Кортежи - Идентификатор объекта (id()) 
- операции in и is (когда == не равно is) 
 
- Типы, type(), преобразование типов - Типы — это объекты
 
- Функции - Функция в Python — это именованная запись алгоритма (подпрограмма) 
- Функции — это тоже просто объекты
 
Связывание объектов
- Создание и удаление объектов при интерпретации команд - Все перечисленные объекты — константные 
 
- Связывание объектов именами, чтобы не удалились
- Множественное связывание (многоместное и распаковкой последовательности) - Функция, которая «возвращает много значений»
 
- Модифицируемые объекты — списки, словари, множества (беглый обзор)
- Связывание объектов ссылками из кортежей (и других составных типов) - (забегая вперёд) Отличие связывания от присваивания на примере списков
 
- Неявная динамическая строгая типизация: типизация объектов, но не имён 
- Конструкции вида «+=» для любых операций (см. simple_stmts.html) 
Нечто про моржа
Операция (а не выделенный оператор) связывания: «:=», см pep-0572
- основное применение (здравствуй, Си!):
- Но не только!
Кеш, треш и изоляция
Связывание и refcount:
- Как кешируются объекты? (а нужно ли это знать) - но
 
- проблема кольцевых изолированных пространств имён 1 >>> a = [1, 2, "QQ"]; b = [a, 4]; a[1] = b 2 >>> a 3 [1, [[...], 4], 'QQ'] 4 >>> b 5 [[1, [...], 'QQ'], 4] 6 >>> a[1] is b 7 True 8 >>> b[0] is a 9 True 10 >>> c = a, b 11 >>> sys.getrefcount(a) 12 4 13 >>> sys.getrefcount(c[0]) 14 4 15 >>> del a, b 16 >>> sys.getrefcount(c[0]) 17 3 18 >>> sys.getrefcount(c[1]) 19 3 20 >>> del c 
- Нечто про gc 
- Как посмотреть все ссылки на объект: gc.get_referrers() 
Д/З
- Прочитать и отщёлкать appetite.html, interpreter.html и introduction.html 
- Добыть на рабочем компьютере - Python (третий, разумется) 
- Редактор, в котором можно писать программы (idle есть почти всегда, например, в дистрибутивах ALT Linux он лежит в пакете python3-tools и называется idle3) 
- Монстры типа WingIDE, PyCharm или Komodo не рекомендуются, но и не запрещаются 
 
- Написать и запустить программу из файла, в котором написано: - 1 print("QQ")
 
Для новоприбывших на спецкурс
Часть прошлого Д/З
- Зарегистрироваться на факультетском EJudge (это же и регистрация на С/К) - не забыть представиться (ФИО и группа в поле «имя»)!
 
- (для тех, кто не успел в прошлый раз) - EJudge: HelloWorld 'Hello World' Input:- Написать программу, которая выводит строку Hello, world (в точности) Output:- (ввод не нужен) - Hello, world 
В следующий раз практическая часть Д/З уже будет более настоящей!
