Это не имеет ничего общего с gzip или Python. Это часть спецификации формата файла для обучающих файлов изображений в базе данных MNIST.
С http://yann.lecun.com/exdb/mnist/:
TRAINING SET IMAGE FILE (train-images-idx3-ubyte):
[offset] [type] [value] [description]
0000 32 bit integer 0x00000803(2051) magic number
0004 32 bit integer 60000 number of images
0008 32 bit integer 28 number of rows
0012 32 bit integer 28 number of columns
Таким образом, значение 2051
используется, чтобы отличать файлы изображений обучающего набора от других типов файлов (например, файлов меток, в которых используется магическое число 2049
).
И, сравнительно, есть еще три 4-байтовых / 32-битных значения после магического числа, указывающего номер изображения, количество строк и количество столбцов; последующие вызовы _read32()
, таким образом, потребляют эти данные, помещая значения в переменные num_images
, rows
и cols
соответственно.
Использование «магических чисел» в этом контексте согласуется с общим значением «магических чисел» в контексте форматов файлов, где они являются константами, используемыми libmagic (инструментом, который используется утилитой file
). использует, чтобы угадать типы файлов). Лучше практиковаться для вновь разработанных форматов - использовать правильные UUID, а не короткие целые числа, которые гораздо чаще встречаются случайно.