На этом шаге мы рассмотрим особенности и область применения объектов этого класса.
Класс 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.