Допустим у нас есть переменная
spam. И мы хотим убедится, что она указывает на объект типа int.spam = 42
0. Способ новичка-принтовичка
print(type(spam))Простой и понятный способ для новичков. Но не подходит для использования в продакшн-коде, так как выводит информацию на экран.
1. Сравнительный
if type(spam) == int:Простой способ сравнить тип переменной с конкретным типом.
...
2. Сравнительный +
if type(spam) is int:Более строгая проверка на совпадение объектов.
...
Познавательная минутка🤓
Оператор
is проверяет не только тип, но и идентичность объекта. И когда вы прочитали в начале статьи: «В Python всё объект», речь шла действительно обо всём в Python. Да, тип объекта так же является объектом:
- 42 - объект типа int
- int - объект типа type
- type - объект типа type
В Python type является базовым типом, от которого наследуются другие типы.
Так вот, is проверяет являются ли объекты справа и слева от оператора одним и тем же объектом или нет
3. Функциональный
if isinstance(spam, int):Гибкий способ проверить, является ли объект экземпляром определенного класса или его подкласса. One love forever ❤️
...
4. Бонусный способ. Проверка на несколько типов, or
if isinstance(spam, (int, float, complex,)):Передача кортежа позволяет проверить объект на принадлежность к нескольким типам одновременно. Работает как цепочка сравнений через or. Достаточно совпасть с одним из типов, чтобы получить истину
...
