Содержание страницы
uuid – объекты UUID согласно RFC 4122¶uuid – UUID objects according to RFC 4122
Исходный код: Lib/uuid.py
This module provides immutable UUID objects (the UUID class)
and the functions uuid1(), uuid3(), uuid4(), uuid5() for
generating version 1, 3, 4, and 5 UUIDs as specified in RFC 4122.
Если вам нужен просто уникальный идентификатор, скорее всего, стоит вызвать uuid1() или uuid4(). Обратите внимание, что uuid1() может нарушить конфиденциальность, так как создаёт UUID, содержащий сетевой адрес компьютера. uuid4() создаёт случайный UUID.
В зависимости от поддержки базовой платформы, uuid1() может возвращать или не возвращать «безопасный» UUID. Безопасный 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 получит свои variant и version number, установленные согласно 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, которые также доступны в виде шести отдельных атрибутов и двух производных атрибутов:
Поле |
Значение |
|
Первые 32 бита UUID. |
|
Следующие 16 бит UUID. |
|
Следующие 16 бит UUID. |
|
Следующие 8 бит UUID. |
|
Следующие 8 бит UUID. |
|
Последние 48 бит UUID. |
|
60-битная временная метка. |
|
14-битный порядковый номер. |
- UUID.hex¶
UUID в виде 32-символьной шестнадцатеричной строки в нижнем регистре.
- UUID.int¶
UUID в виде 128-битного целого числа.
- UUID.variant¶
Вариант UUID, определяющий внутреннюю структуру UUID. Это будет одна из констант
RESERVED_NCS,RFC_4122,RESERVED_MICROSOFTилиRESERVED_FUTURE.
- 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 является X.500 DN в формате DER или текстовом формате вывода.
Модуль uuid определяет следующие константы для возможных значений атрибута variant:
- uuid.RESERVED_NCS¶
Зарезервировано для совместимости с NCS.
- uuid.RESERVED_MICROSOFT¶
Зарезервировано для совместимости с Microsoft.
- uuid.RESERVED_FUTURE¶
Зарезервировано для будущего определения.
См. также
- RFC 4122 – пространство имён URN для универсального уникального идентификатора (UUID)
Данная спецификация определяет пространство имён универсальных имён ресурсов (URN) для UUID, их внутренний формат, а также методы генерации UUID.
Пример¶Example
Вот несколько примеров типичного использования модуля uuid:
>>> import uuid
>>> # создать UUID на основе идентификатора хоста и текущего времени
>>> uuid.uuid1()
UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')
>>> # создать UUID с использованием MD5-хеша UUID пространства имён и имени
>>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')
UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')
>>> # создать случайный UUID
>>> uuid.uuid4()
UUID('16fd2706-8baf-433b-82eb-8c7fada847da')
>>> # создать UUID с использованием SHA-1-хеша UUID пространства имён и имени
>>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')
UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')
>>> # создать 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')