- en
- Language: ru
- Documentation version: latest
Проверка типов
При преобразовании типов данных могут возникнуть ошибки такого рода:
In [1]: int('a')
------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-42-b3c3f4515dd4> in <module>()
----> 1 int('a')
ValueError: invalid literal for int() with base 10: 'a'
Ошибка абсолютно логичная. Мы пытаемся преобразовать в десятичный формат строку „a“.
И если тут пример выглядит, возможно, глупым, тем не менее, когда нужно, например, пройтись по списку строк и преобразовать в числа те из них, которые содержат числа, можно получить такую ошибку.
Чтобы избежать её, было бы хорошо иметь возможность проверить, с чем мы работаем.
isdigit()
В Python такие методы есть. Например, чтобы проверить, состоит ли строка
из одних цифр, можно использовать метод isdigit()
:
In [2]: "a".isdigit()
Out[2]: False
In [3]: "a10".isdigit()
Out[3]: False
In [4]: "10".isdigit()
Out[4]: True
isalpha()
Метод isalpha()
позволяет проверить, состоит ли строка из одних
букв:
In [7]: "a".isalpha()
Out[7]: True
In [8]: "a100".isalpha()
Out[8]: False
In [9]: "a-- ".isalpha()
Out[9]: False
In [10]: "a ".isalpha()
Out[10]: False
isalnum()
Метод isalnum()
позволяет проверить, состоит ли строка из букв или
цифр:
In [11]: "a".isalnum()
Out[1]: True
In [12]: "a10".isalnum()
Out[12]: True
type()
Иногда, в зависимости от результата, библиотека или функция может выводить разные типы объектов. Например, если объект один, возвращается строка, если несколько, то возвращается кортеж.
Нам же надо построить ход программы по-разному, в зависимости от того, была ли возвращена строка или кортеж.
В этом может помочь функция type()
:
In [13]: type("string")
Out[13]: str
In [14]: type("string") is str
Out[14]: True
Аналогично с кортежем (и другими типами данных):
In [15]: type((1,2,3))
Out[15]: tuple
In [16]: type((1,2,3)) is tuple
Out[16]: True
In [17]: type((1,2,3)) is list
Out[17]: False