Разные типы - разное поведение!
Разные типы - разное поведение!¶
Результат выполнения одной и той же операции зависит от типа задействованных в ней объектов.
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