Содержание страницы
21.20. 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.
-
class
uuid.UUID(hex=None, bytes=None, bytes_le=None, fields=None, int=None, version=None)¶ Создаёт UUID из строки из 32 шестнадцатеричных цифр, строки из 16 байт в качестве аргумента bytes, строки из 16 байт в обратном порядке байтов (little-endian) в качестве аргумента 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) и номер версии, установленные в соответствии с 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 time60-битная метка времени clock_seq14-битный номер последовательности
-
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 определяет следующие функции:
-
uuid.getnode()¶ Получает аппаратный адрес в виде 48-битного положительного целого числа. При первом запуске может быть запущена отдельная программа, что может быть довольно медленным. Если все попытки получить аппаратный адрес не удались, выбирается случайное 48-битное число с восьмым битом, установленным в 1, как рекомендуется в RFC 4122. «Аппаратный адрес» означает 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.
21.20.1. Пример¶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')