Урок 6 из 84 · Основы Python

Типы данных

Типы данных ( Data types ) - это классификация различных состояний хранения информации. Другими словами, для компьютера 1 и "1" это разные типы данных. Первый относится к integer(целое число), а второй к string (строка). И сложить их вместе мы сможем только преобразовав один тип к другому.

Например:

print(1 + "1")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Мы получили ошибку TypeError . Программа говорит, что сложение целого числа и строки невозможно.

Окей. Если мы хотим получить в ответе строку, то тогда мы должны преобразовать целое число в строку с помощью функции str().

print(str(1) + "1")

Output:
11

В ответе мы получаем строку 11. Почему 11? Почему не 2, спросите вы. Но так как мы складываем строки, математические операции внутри строк не отработают, произойдеть лишь склеивание.

Чтобы получить число 2, мы должны преобразовать строку "1" в тип данных int c помощью функции int()

print(1 + int("1"))

Output:
2

Тоесть, мы с вами поняли, что типы данных играют значительную роль в программе.

Существуют различные типы данных в питоне. Они делятся между собой на 2:

  • Изменяемые (Mutable)

    Под изменяемыми понимают типы, объекты которых могут быть изменены на месте, как, например, список, который имеет модифицирующие его методы list.remove, list.append, ... [10]

    • bytearray
    • Списки
    • Словари (dict)
    • Множества (set)
  • Неизменяемые (Immutable)

    Напротив, у неизменяемых объектов отсутствует модифицирующие их методы

    • Числа (int, float, complex, Decimal, Fractions)
    • Строки
    • Кортежи
    • Bytes
    • Диапазон (range)
    • Frozenset
    • bool
    • None
    • NotImplemented
    • function

Динамическая типизация vs статическая типизация

В языках с динамической типизацией в одну и ту же переменную можно записывать разного типа данные:

a = 123

a = "python is great"

В языках со статической типизацией это не допускается. В данном случае, при объявлении переменной “a” и присвоении ему значения 123, тип у этой переменной стал “int”, и мы получим ошибку если мы той же переменной попытаемся присвоить значение "python is great" тип у которого “string”.

Типы данных

  • None

    Этот тип имеет одно значение. Существует только один объект с этим значением, доступ к которому осуществляется через встроенное имя None. Этот тип используется для обозначения отсутствия значения во многих ситуациях, например, он возвращается из функций, которые ничего явно не возвращают. Его истинное значение ложно

  • bool

    это логический тип данных, который может содержать значения True или False. bool является подтипом целочисленного типа и, соответственно, почти во всех контекстах ведет себя как 0 для False и 1 для True. Исключением является его преобразование в строковый тип, при котором возвращаются строковые значения 'False' или 'True'

  • Числа

    Числа являются неизменяемыми типами данных. К ним относятся встроенные типы int, float, complex, а также типы Decimal и Fractions, которые могут быть импортированы, соответственно, из модулей decimal и fractions

  • int

    Тип int представляет целые числа, размер которых ограничен лишь объемом оперативной памяти.

  • Float

    Тип float представляет числа с плавающей запятой. Python не поддерживает числа с плавающей запятой одинарной точности: экономия на использовании процессора и памяти, которая обычно является причиной их использования, сводится на нет из-за накладных расходов на использование объектов в Python, поэтому нет смысла усложнять язык двумя типами чисел с плавающей запятой.

  • complex

    Тип complex представляет собой комплексные числа в виде пары чисел с плавающей запятой двойной точности, которые, в свою очередь, представляют действительную и мнимую части. Действительная и мнимая части комплексного числа z могут быть получены с помощью атрибутов только для чтения z.real и z.imag.

  • str

    Строки являются неизменяемыми последовательностями кодовых точек Unicode. Все кодовые точки в диапазоне U+0000 - U+10FFFF могут быть представлены в виде строки.

    str является рекурсивной структурой данных, каждая кодовая точка в строке сама является объектом str длиной, равной 1. Вероятно, поэтому у Python отсутствует тип char.

  • bytes

    Тип bytes представляет собой неизменяемую последовательность одиночных байтов (целых чисел в диапазоне 0 <= x < 256) или, другими словами, неизменяемый массив байтов. Объекты bytes могут быть декодированы в строку с помощью метода decode().

  • bytearray

    Объект bytearray является изменяемым массивом байтов. Помимо того, что байтовые массивы могут быть изменяемыми (и, следовательно, не подлежащими изменению), они обеспечивают тот же интерфейс и функциональность, что и неизменные байтовые объекты bytes.

  • list

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

  • tuple

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

  • range

    Тип range представляет собой неизменяемую последовательность чисел, обычно используемая в цикле for.

  • dict

    Тип dict или словарь - это изменяемая структура данных, которая является отображением ссылок на объекты, доступ к которым может быть получен по ключу, а не по позиции. Словари реализованы в виде динамически расширяемых хеш-таблиц.

  • set

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

    Обычно они используются для удаления дубликатов из последовательности или проверки на принадлежность.

  • frozenset

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

  • function

    Объекты функций создаются с помощью определений функций. Единственная операция над объектом-функцией - вызывать его:

    func(arguments)

    На самом деле существует два вида объектов функций: встроенные и пользовательские. Оба вида поддерживают одну и ту же операцию вызова функции, но их реализация отличается, следовательно - это разные типы объектов.

Отзыв