Переменные и ввод-вывод
Переменные
- Интерпретация вычисления выражения в терминах создания и удаления объектов
TODO описать
Именование объекта — переменная, тогда объект не удаляется!
Имена переменных — любые цифры, буквы и «"_"», начинается не с цифры
Операция «"="» — операция связывания (или именования)
Где лежат имена объектов (переменные) — dir()
Где ещё лежат имена объектов — dir(__builtins__)
- У одного объекта может быть несколько имён!
Функции: первое знакомство
Некоторые объекты — исполняемые (callable). Их можно запустить, они что-то вычислят и вернут вычисленное значение. Для запуска надо после объекта поставить скобочки.
1 >>> dir
2 <built-in function dir>
3 >>> dir()
4 ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
5 >>> 7()
6 <stdin>:1: SyntaxWarning: 'int' object is not callable; perhaps you missed a comma?
7 Traceback (most recent call last):
8 File "<stdin>", line 1, in <module>
9 TypeError: 'int' object is not callable
10 >>> a = 7
11 >>> a()
12 Traceback (most recent call last):
13 File "<stdin>", line 1, in <module>
14 TypeError: 'int' object is not callable
15 >>> a = dir
16 >>> a()
17 ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'a']
18
Обратите внимание на последний пример с двумя именами одного и того же объекта-функции a и dir
- У функции может быть сколько угодно параметров, от нуля до «очень много». Некоторые функции хотят строго ограниченное число параметров, некоторые — нет:
dir() — 0 или 1
max() — 2 и больше
round() — 1 или 2
- и т. п.
Параметры перечисляются через запятую
Параметры сначала вычисляются как выражения, получается по одному объекту на каждый параметр, а потом эти объекты передаются в функцию
Если функцию не вызывать, а просто упомянуть по имени, Python скажет что-то типа «это функция» ☺
Типы объектов
- Все объекты обязательно должны быть какого-нибудь типа:
- В действительности тип объекта — это тоже такой объект, и он является функцией!
(строго говоря — классом, но для нас разницы пока нет)
- Тип может изготовить объект из объекта другого типа (как в примере целое из вещественного)
- (а может и не суметь)
Кстати type() — это, конечно, тоже функция-класс
- Вот тут мы избегаем дурной бесконечности
Объекты в Python строго типизированы, а имена не типизированы вообще: у любого объекта может быть любое имя
Точно так же не имеет значения, какой объект как назывался раньше
1 >>> a = b = c = 100500 2 >>> a, b, c 3 (100500, 100500, 100500) 4 >>> type(a), type(b), type(c) 5 (<class 'int'>, <class 'int'>, <class 'int'>) 6 >>> b = 0.12345 7 >>> a = dir 8 >>> type(a), type(b), type(c) 9 (<class 'builtin_function_or_method'>, <class 'float'>, <class 'int'>) 10 >>> a, b, c 11 (<built-in function dir>, 0.12345, 100500)
Строки: первое знакомство
Ещё один тип объектов — строки (последовательности знаков)
- Задаются в апострофах или кавычках
- Можно складывать (склеивать) и умножать (склеивать с самим собой)
- У строковых объектов свой тип:
Строку можно сделать из всего!
- Числа можно сделать из строк
1 >>> s = "123" 2 >>> s + s 3 '123123' 4 >>> n = int(s) 5 >>> n + n 6 246 7 >>> float("123.456") 8 123.456 9 >>> int("123.456") 10 Traceback (most recent call last): 11 File "<stdin>", line 1, in <module> 12 ValueError: invalid literal for int() with base 10: '123.456' 13 14 invalid literal for int() with base 10: '123.456' 15
Ввод и вывод в программе (сценарии)
- Повторение: редактор, сохранение файла, запуск
Функция вывода print()
- Сколько угодно параметров, в том числе ни одного
- Все параметры переводит в строки и выводит эти строки через пробел
Если написать print(…, sep='строка'), вместо пробелов будет 'строка'
Сколько параметров было передано функции print() в примере?
Функция ввода input()
- Необязательный параметр-подсказка
Как работает print(a * 2) в терминах создания и удаления объектов
А как написать программу сложения двух чисел?
Про Д/З
- Как прощёлкивать и запускать решения в броузере
- Как скопировать из окна решения задачи в редактор
Как должен называться файл: prog_№занятия_№задачи.py
- Всего задач восемь, занятие первое, соответственно сегодняшнее Д/З:
prog_1_1.py prog_1_2.py prog_1_3.py prog_1_4.py prog_1_5.py prog_1_6.py prog_1_7.py prog_1_8.py
Д/З
Отщёлкать Первое занятие учебника и решить все задачи
Скопировать решения в соответствующие файлы и проверить, что они всё ещё работают!
Прислать эти восемь файлов в виде восьми приложений к одному письму по адресу <uneexlectures AT cs DOT msu DOT ru>
В поле Subject должно быть «слово» PhilosoPython2022 (другие слова тоже можно ☺)