НОЧУ ДПО "Национальный открытый университет "ИНТУИТ"
Опубликован: 24.01.2021 | Доступ: свободный | Студентов: 2489 / 106 | Длительность: 03:57:00
Лекция 2:

Арифметический тип данных

< Лекция 1 || Лекция 2: 12345

Смотреть на youtube

Рассмотрение любого языка полезно начинать с рассмотрения типов данных этого языка. В этом отношении язык Python уникален. Такой развитой системы встроенных в язык типов нет ни в каком другом языке программирования. Обычно встроенных типов немного, а остальные реализуются типами, определенными в сопровождающих библиотеках, либо определяются самим программистом. В Питоне наряду со встроенными типами программисту доступен широкий набор библиотечных типов, определенных в модулях Питона.

О проекте, сопровождающем эту главу

В тексте, который я пишу, программный код играет важное, если не определяющее значение. Все приводимые примеры - это фрагменты созданного проекта. Для этой лекции я создал в Visual Studio 2019 - проект на языке Python Lecture1.rar, в который включил три модуля с именами; AriphmeticType, LogicalType, TextType. Каждый модуль содержит набор тестовых функций, которые вызываются для исполнения. Коды этих функций и полученные результаты приводятся в тексте лекций.

Переменные, объекты. Имена и значения

Язык Python относится к языкам ООП (объектно-ориентированного программирования). Но применение средств ООП не является обязательным. Поэтому, чаще всего, объекты программы называются переменными.

В строго типизированных языках всякому действию над переменной с именем x предшествует объявление переменной x, содержащее описание ее типа. В языке Python идеология другая. Важной особенностью языка Python является полное отсутствие объявлений переменных. По сути переменных в классическом понимании нет. Есть имена и есть объекты, представляющие значение. Имена никогда не объявляются, не связываются с определенным типом. Имена - это ссылки (указатели) на объекты. Связывание имени и объекта происходит динамически в момент выполнения операции присваивания. С этого момента имя ссылается на объект, указанный в правой части оператора присваивания. Эта связь работает до очередного присваивания этому же имени другого объекта. Заметьте, имя - это ссылка, которая может быть связана с объектом любого типа. При связывании с объектом имя временно получает тип и значение объекта, с которым она связывается. Тип и значение имеет объект, но не имя.

В ходе выполнения одного метода, одного блока имя может связываться с объектами разных типов. Это непривычная интерпретация, характерная именно для языка Python, отличная от интерпретации имени и понятия переменной в строго типизированных языках программирования.

Такая свобода упрощает процесс написания кода, уменьшает его длину. Иногда такой подход относят к достоинствам языка. Для простых программ небольшого объема это утверждение справедливо. Для серьезных программ, разрабатываемых коллективом разработчиков, такая стратегия чревата ошибками, увеличивает сложность понимания кода. Использовать одно и тоже имя для разных сущностей одного блока без сомнения означает нарушение всех правил стиля качественного программирования, когда не длине кода, а его корректности, уделяется основное внимание.

С другой стороны, с одним и тем же объектом может быть одновременно связано несколько имен - псевдонимов. Это важная концепция ООП, поскольку при передаче "тяжелых" объектов из одной части программы в другую достаточно передавать ссылку, а не сам объект. Такой способ эффективен, но чреват ошибками, поскольку изменение объекта в одной части программы отражается на всех псевдонимах в других частях программы. Работа с псевдонимами требует аккуратного программирования.

Понятно, что для простых типов данных, задающих "легкие" объекты, такой способ работы не желателен. Поэтому в языке Python введено понятие неизменяемых типов, к которым относится арифметический тип и другие простые типы данных. Объекты неизменяемых типов могут иметь имена - псевдонимы. Но изменять значение объекта не разрешается. Всякий раз, когда нужно изменить значение объекта, связанного с именем x, в результате изменения создается новый объект, с которым и связывается имя x. Старый объект, с которым было связано имя x, не изменяется, и все прежние псевдонимы x остаются связанными со старым объектом.

< Лекция 1 || Лекция 2: 12345
Алексей Авилов
Алексей Авилов

Неужели не нашлось русских специалистов, чтобы записать курс по пайтону ? Да, можно включить переводчик и слушать с переводом, но это что? Это кто-то считает хорошим и понятным курсом для начинающих? 

Елена Лаптева
Елена Лаптева

Думаю. что не смогу его закончить. Хотелось предупредить других - не тратьте зря время, ищите другой курс.