Шаг 113.
Python: тонкости программирования. Общие структуры данных Python. Записи, структуры и объекты переноса данных. struct.Struct - сериализованные С-структуры

    На этом шаге мы рассмотрим особенности и область применения объектов этого класса.

    Класс struct.Struct выполняет преобразование между значениями Python и структурами C, сериализованными в форму объектов Python bytes.


См. документацию Python "struct.Struct": https://docs.python.org/3/library/struct.html#module-struct.

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

    Структуры Struct определяются с использованием форматного строкоподобного мини-языка, который позволяет определять расположение различных типов данных C, таких как char, int и long, а также их беззнаковых вариантов.

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

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

>>> from struct import Struct
>>> MyStruct = Struct('i?f')
>>> data = MyStruct.pack(23, False, 42.0)
# Вы получаете двоичный объект данных (blob):
>>> data
b'\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00(B'
# BLOB-объекты можно снова распаковать:
>>> MyStruct.unpack(data)
(23, False, 42.0)

    На следующем шаге мы рассмотрим класс types.SimpleNamespace.




Предыдущий шаг Содержание Следующий шаг