uuid
— UUID объекты согласно RFC 4122
Данный модуль предоставляет неизменяемые UUID
объекты (класс
UUID
) и функции uuid1()
, uuid3()
, uuid4()
,
uuid5()
для создания UUID версий 1, 3, 4 и 5, как указано в RFC 4122.
Если всё, что вам нужно, это уникальный идентификатор, то вам следует
вызвать uuid1()
или uuid4()
. Обратите внимание, что uuid1()
может поставить под угрозу конфиденциальность, поскольку она создаёт UUID,
содержащий сетевой адрес компьютера. uuid4()
создаёт случайный UUID.
В зависимости от поддержки базовой платформы uuid1()
может возвращать или
не возвращать «безопасный» UUID. Безопасный UUID — это тот, который
генерируется с использованием методов синхронизации, гарантирующих, что
никакие два процесса не смогут получить один и тот же UUID. У всех экземпляров
UUID
есть атрибут is_safe
, передающий любую информацию
о безопасности UUID, используя следующее перечисление:
-
class
uuid.
SafeUUID
Добавлено в версии 3.7.
-
safe
UUID был создан безопасным для многопроцессорной обработки способом.
-
unsafe
UUID не был создан безопасным для многопроцессорной обработки способом.
-
unknown
Платформа не предоставляет информацию о том, был ли UUID сгенерирован безопасно или нет.
-
-
class
uuid.
UUID
(hex=None, bytes=None, bytes_le=None, fields=None, int=None, version=None, *, is_safe=SafeUUID.unknown) Создать UUID либо из строки 32 шестнадцатеричных цифр, строки из 16 байтов с обратным порядком байтов в качестве bytes аргумента, строки из 16 байтов с прямым порядком байтов в качестве аргумента bytes_le, кортежа из шести целых чисел (32-битный time_low, 16-битный time_mid, 16-битный time_hi_version, 8-битный clock_seq_hi_variant, 8-битный clock_seq_low, 48-битный node) в качестве аргумента fields или один 128-битный целочисленный аргумент int. Когда задана строка шестнадцатеричных цифр, фигурные скобки, дефисы и префикс URN необязательны. Например, все данные выражения отдают один и тот же UUID:
UUID('{12345678-1234-5678-1234-567812345678}') UUID('12345678123456781234567812345678') UUID('urn:uuid:12345678-1234-5678-1234-567812345678') UUID(bytes=b'\x12\x34\x56\x78'*4) UUID(bytes_le=b'\x78\x56\x34\x12\x34\x12\x78\x56' + b'\x12\x34\x56\x78\x12\x34\x56\x78') UUID(fields=(0x12345678, 0x1234, 0x5678, 0x12, 0x34, 0x567812345678)) UUID(int=0x12345678123456781234567812345678)
Должен быть указан ровно один из hex, bytes, bytes_le, fields или int. Аргумент version является необязательным; если задан, у результирующего UUID будет свой вариант и номер версии, установленные в соответствии с RFC 4122, переопределяя биты в заданных hex, bytes, bytes_le, fields или int.
Сравнение объектов UUID производится путём сравнения их атрибутов
UUID.int
. Сравнение с объектом, отличным от UUID, вызывает ошибкуTypeError
.str(uuid)
возвращает строку в форме12345678-1234-5678-1234-567812345678
, где 32 шестнадцатеричных цифры представляющие UUID.
У экземпляров UUID
есть следующие только для чтения атрибуты:
-
UUID.
bytes
UUID в виде 16-байтовой строки (содержащей шесть целочисленных полей в обратном порядке байтов).
-
UUID.
bytes_le
UUID в виде 16-байтовой строки (с time_low, time_mid и time_hi_version в порядке байтов с прямым порядком байтов).
-
UUID.
fields
Кортеж из шести целочисленных полей UUID, которые также доступны в виде шести отдельных атрибутов и двух производных атрибутов:
Поле Разъяснение time_low
первые 32 бита UUID time_mid
следующие 16 битов UUID time_hi_version
следующие 16 битов UUID clock_seq_hi_variant
следующие 8 битов UUID clock_seq_low
следующие 8 битов UUID node
последние 48 битов UUID time
60-битная временная метка clock_seq
14-разрядный порядковый номер
-
UUID.
hex
UUID в виде 32-символьной шестнадцатеричной строки.
-
UUID.
int
UUID в виде 128-битного целого числа.
-
UUID.
urn
UUID в виде URN, как указано в RFC 4122.
-
UUID.
variant
Вариант UUID, который определяет внутреннюю компоновку UUID. Это будет одна из констант
RESERVED_NCS
,RFC_4122
,RESERVED_MICROSOFT
илиRESERVED_FUTURE
.
-
UUID.
version
Номер версии UUID (от 1 до 5, имеет значение, только если вариант —
RFC_4122
).
-
UUID.
is_safe
Перечисление
SafeUUID
, указывающее, сгенерировала ли платформа UUID безопасным для многопроцессорной обработки способом.Добавлено в версии 3.7.
Модуль uuid
определяет следующие функции:
-
uuid.
getnode
() Получить аппаратный адрес в виде 48-битного положительного целого числа. При первом запуске может запуститься отдельная программа, которая может быть довольно медленной. Если все попытки получить аппаратный адрес не увенчались успехом, мы выбираем случайное 48-битное число с многоадресным битом (младшим значащим битом первого октета), установленным в 1, как рекомендовано в RFC 4122. «Аппаратный адрес» означает MAC-адрес сетевого интерфейса. На машине с несколькими сетевыми интерфейсами универсально администрируемые MAC-адреса (т. е. где второй младший бит первого октета сброшен) будут предпочтительнее, чем локально администрируемые MAC- адреса, но без других гарантий порядка.
Изменено в версии 3.7: Универсально администрируемые MAC-адреса предпочтительнее, чем локально администрируемые MAC-адреса, поскольку первые гарантированно будут глобально уникальными, а вторые — нет.
-
uuid.
uuid1
(node=None, clock_seq=None) Создать UUID из идентификатора хоста, порядкового номера и текущего времени. Если node не указан, для получения аппаратного адреса используется
getnode()
. Если задан clock_seq, он используется в качестве порядкового номера; в противном случае выбирается случайный 14-битный порядковый номер.
-
uuid.
uuid3
(namespace, name) Создаёт UUID на основе MD5 хэша идентификатора пространства имён (являющийся UUID) и имени (являющийся строкой).
-
uuid.
uuid4
() Создаёт случайный UUID.
-
uuid.
uuid5
(namespace, name) Создаёт UUID на основе хэша SHA-1 идентификатора пространства имён (являющийся UUID) и имени (являющийся строкой).
Модуль uuid
определяет следующие идентификаторы пространства имён для
использования с uuid3()
или uuid5()
.
-
uuid.
NAMESPACE_DNS
Когда указано это пространство имён, строка name является полным доменным именем.
-
uuid.
NAMESPACE_URL
Когда указано данное пространство имён, строка name является URL-адресом.
-
uuid.
NAMESPACE_OID
Когда указано данное пространство имён, строка name является ISO OID.
-
uuid.
NAMESPACE_X500
Если указано это пространство имён, строка name представляет собой DN X.500 в формате DER или текстовом формате вывода.
Модуль uuid
определяет следующие константы для возможных значений
атрибута variant
:
-
uuid.
RESERVED_NCS
Зарезервировано для совместимости с NCS.
-
uuid.
RFC_4122
Указывает макет UUID, указанный в RFC 4122.
-
uuid.
RESERVED_MICROSOFT
Зарезервировано для совместимости с Microsoft.
-
uuid.
RESERVED_FUTURE
Зарезервировано для будущего определения.
См.также
- RFC 4122 — пространство имён универсального уникального идентификатора (UUID)
- Спецификация определяет Единое пространство имён ресурсов для UUID, внутренний формат UUID и методов генерации UUID.
Пример
Вот несколько примеров типичного использования модуля uuid
:
>>> import uuid
>>> # создать UUID на основе идентификатора хоста и текущего времени
>>> uuid.uuid1()
UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')
>>> # создать UUID, используя MD5-хэш UUID пространства имен и имени
>>> uuid.uuid3(uuid.NAMESPACE_DNS, 'digitology.tech')
UUID('8a726b3d-1bd8-3f04-a96c-08ee394b75cc')
>>> # создать случайный UUID
>>> uuid.uuid4()
UUID('16fd2706-8baf-433b-82eb-8c7fada847da')
>>> # создать UUID, используя хэш SHA-1 из UUID пространства имен и имени
>>> uuid.uuid5(uuid.NAMESPACE_DNS, 'digitology.tech')
UUID('1c8ee55a-fd31-5fdf-b54f-da3a34cb5b3b')
>>> # создать UUID из строки шестнадцатеричных цифр (фигурные скобки и дефисы игнорируются)
>>> x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')
>>> # преобразовать UUID в строку шестнадцатеричных цифр в стандартной форме
>>> str(x)
'00010203-0405-0607-0809-0a0b0c0d0e0f'
>>> # получить необработанные 16 байт UUID
>>> x.bytes
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
>>> # создать UUID из 16-байтовой строки
>>> uuid.UUID(bytes=x.bytes)
UUID('00010203-0405-0607-0809-0a0b0c0d0e0f')