⇤ ← Версия 1 от 2022-09-10 16:11:29
5398
Комментарий:
|
7328
|
Удаления помечены так. | Добавления помечены так. |
Строка 2: | Строка 2: |
<<MiniPage(----\n'''~+Это копипаста аналогичного материала прошлых лет; возможно, её надо отредактировать+~'''----\n)>> | |
Строка 36: | Строка 35: |
* `dir()` и `globals()` | 8 операция связывания `"="` * что такое [[py3doc:functions#dir|dir()]] и [[py3doc:functions#globals|globals()]] (а также `locals()`) |
Строка 58: | Строка 58: |
== Кеш, треш и изоляция == Связывание и refcount: * Как кешируются объекты? (а нужно ли это знать) {{{#!python >>> a, b = 1092, 1092; c = 1092 >>> a is b is c True >>> a, b = 1092, 1092 >>> c = 1092 >>> a is b, a is c (True, False) }}} но {{{#!python >>> a, b = 92, 92 >>> c = 92 >>> a is b is c True }}} * проблема кольцевых изолированных пространств имён {{{#!python >>> a = [1, 2, "QQ"]; b = [a, 4]; a[1] = b >>> a [1, [[...], 4], 'QQ'] >>> b [[1, [...], 'QQ'], 4] >>> a[1] is b True >>> b[0] is a True >>> c = a, b >>> sys.getrefcount(a) 4 >>> sys.getrefcount(c[0]) 4 >>> del a, b >>> sys.getrefcount(c[0]) 3 >>> sys.getrefcount(c[1]) 3 >>> del c }}} * [[https://pythontutor.com/visualize.html#code=a%20%3D%20%5B1,%202,%20%22QQ%22%5D%0Ab%20%3D%20%5Ba,%204%5D%0Aa%5B1%5D%20%3D%20b%0Aprint%28a%5B1%5D%20is%20b,%20b%5B0%5D%20is%20a%29%0Ac%20%3D%20a,%20b%0Adel%20a,%20b%0Adel%20c&cumulative=true&curInstr=0&heapPrimitives=true&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false|Посмотреть на pythontutor]] * Нечто про [[py3doc:gc]] {{{#!python >>> import gc >>> gc.disable() >>> gc.set_debug(gc.DEBUG_LEAK) >>> a = [1,.2,3]; a[1] = a >>> a [1, [...], 3] >>> hex(id(a)) '0x7f699e930800' >>> del a >>> gc.collect() gc: collectable <list 0x7f699e930800> 1 >>> gc.garbage [[1, [...], 3]] }}} * Как посмотреть все ссылки на объект: [[py3doc:gc.html#gc.get_referrers|gc.get_referrers()]] |
|
Строка 63: | Строка 125: |
* Написать и запустить программу из файла, в котором написано: | * Монстры типа WingIDE, !PyCharm или Komodo не рекомендуются, но и не запрещаются 1. Написать и запустить программу из файла, в котором написано: |
Строка 67: | Строка 130: |
1. [[http://ejudge.cs.msu.ru/register?action=207&contest_id=164|Зарегистрироваться в EJudge (164 турнир)]] * [[Python/PsyPython2018/EjudgeRegistration|Пошаговая инструкция]] (делаем поправку на номер турнира) * не забыть представиться (ФИО и группа в поле «имя»)! * [[http://ejudge.cs.msu.ru/new-client?contest_id=164|Ссылка для уже зарегистрированных]] 1. <<EJCMC(164, HelloWorld, Hello World)>> |
=== Для новоприбывших на спецкурс === Часть прошлого Д/З 1.#0 [[https://uneex.org/Python/PsyPython2018/EjudgeRegistration|Зарегистрироваться]] на факультетском EJudge (это же и регистрация на С/К) * не забыть представиться (ФИО и группа в поле «имя»)! * [[http://ejudge.cs.msu.ru/new-client?contest_id=230|Ссылка для уже зарегистрированных]] 1. (для тех, кто не успел в прошлый раз) <<EJCMC(164, HelloWorld, Hello World)>> В следующий раз практическая часть Д/З уже будет более настоящей! |
Командная строка и объекты
Интерпретатор командной строки
- Командная строка как общий принцип интерфейса
- Диалог «команда — ответ…»
- Точнее: ввод → синтаксический анализ → интерпретация → вывод → …
- Совмещение потока данных и потока управления
- Редактор: подсказка, история, достраивание, поиск по истории
- Диалог «команда — ответ…»
- 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'
Написать программу, которая выводит строку Hello, world (в точности)
(ввод не нужен)
Hello, world
В следующий раз практическая часть Д/З уже будет более настоящей!