Python: Сильная типизация
Нам известно про два разных типа данных: числа и строки. Мы, например, могли складывать числа, потому что операция сложения — это операция для типа «числа».
А что, если применить эту операцию не к двум числам, а к числу и строке?
print(1 + '7') # TypeError: unsupported operand type(s)...
Python не разрешит сложить число 1
и строку '7'
, потому что это значения разных типов. Нужно сначала либо сделать строку числом, либо число строкой (как это сделать, мы поговорим позже). Такое педантичное отношение к совместимости типов называется строгой типизацией. Python - язык со строгой типизацией.
Не все языки так делают. Скажем, PHP, это язык со слабой типизацией. Он знает о существовании разных типов (числа, строки и др.), но относится к их использованию не очень строго, пытаясь преобразовывать информацию, когда это кажется разумным.
Такое автоматическое неявное преобразование типов с одной стороны и правда кажется удобным. Но на практике это свойство языка создает множество ошибок и проблем, которые трудно найти. Код может иногда работать, а иногда не работать — в зависимости от того, «повезло» ли в конкретном случае с автоматическим преобразованием. Программист это заметит не сразу.
Задание
Выведите на экран результат выражения: 7 - (-8 - -2)
. Попробуйте сделать число 7 не числом, а строкой. Поэкспериментируйте с другими числами тоже.