Разные типы - разное поведение!

Разные типы - разное поведение!

Результат выполнения одной и той же операции зависит от типа задействованных в ней объектов.

12 + 34
46
'12' + '34'
'1234'

Функция type() выдаёт тип объекта. В языке несколько встроенных типов объектов.

type(12), type(12.), type('12')
(int, float, str)
  • int - integer, целое число

  • float - число с плавающей запятой

  • str - строка

Какими средствами нам удалось получить разные типы представления числа 12? Всё определяется нюансами синтаксиса: если рядом с числом поставить точку, то такая комбинация интерпретируется как дробное число (с плавающей запятой). Если последовательность любых символов ограничена с двух сторон кавычками, то такой синтаксис задаёт строковую переменную.

Часто типы данных несовместимы в рамках конкретной операции.

'12' + 34
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-afb1c3d28cba> in <module>
----> 1 '12' + 34

TypeError: can only concatenate str (not "int") to str

В случае ошибки нужно прочитать последнюю строчку. TypeError - ошибка типа. Ошибка снабжена комментарием, что присоединить к строке можно только строку. В данном случае интерпретатору не удалось преобразовать целое число в строку.

Подумайте, как нужно исправить код, чтобы он работал без ошибок? (Подсказка: см. ячейки выше, где операция проводится с объектами одного типа.)

При этом другая операция может быть доступна для данного сочетания переменных.

'12' * 34
'12121212121212121212121212121212121212121212121212121212121212121212'

Кроме термина «тип переменных» может встречаться термин «класс объектов».

Класс - программный конструкт, который определяет объекты, которые можно получить при его вызове - то есть экземпляры этого класса. Все экземпляры одного класса имеют один и тот же тип.

Собственно тип объекта - это и есть ссылка на класс, при вызове которого был получен данный объект.

В повседневном языке принадлежность вещей к одному классу или к одному типу обычно обозначает одно и то же. Для непрограммиста допустимо считать эти понятия синонимами.

'12'.__class__
str
(12).__class__
int
str(12)
'12'
int('12')
12

str и int - это типы переменных. При их вызове в форме функций можно получить новые экземпляры этих классов с использованием переданных данных. Данные могут быть другого типа - в этом случае происходит преобразование типа переменной. То есть из строки „12“ мы можем сделать целое число, и наоборот.

str()
''
int()
0