uuid — Объекты UUID в соответствии с RFC 4122
Исходный код: Lib/uuid.py
Этот модуль предоставляет неизменяемые UUID объекты (класс UUID) и функции uuid1(), uuid3(), uuid4(), uuid5() для генерации UUID версии 1, 3, 4 и 5, как указано в 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 байтов в формате big-endian (аргумент 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 будет иметь свой вариант и номер версии, установленные в соответствии с 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 байтов (содержащая шесть целочисленных полей в формате big-endian).
-
UUID.bytes_le -
UUID как строка из 16 байтов (с time_low, time_mid и time_hi_version в формате little-endian).
-
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
60-битовая метка времени
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.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-адреса по сравнению с локальными, поскольку первые гарантированно уникальны в глобальном масштабе, в то время как вторые таковыми не являются.
-
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.RFC_4122 -
Указывает макет UUID, приведенный в RFC 4122.
-
uuid.RESERVED_MICROSOFT -
Зарезервировано для совместимости с Microsoft.
-
uuid.RESERVED_FUTURE -
Зарезервировано для будущего определения.
См. также
- RFC 4122 - Пространство имен URN для универсальных уникальных идентификаторов (UUID)
-
В этом документе определено пространство имен Uniform Resource Name для UUID, внутренний формат UUID и методы генерации UUID.
Пример
Ниже приведены примеры типичного использования модуля uuid:
>>> import uuid
>>> # make a UUID based on the host ID and current time
>>> uuid.uuid1()
UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')
>>> # make a UUID using an MD5 hash of a namespace UUID and a name
>>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')
UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')
>>> # make a random UUID
>>> uuid.uuid4()
UUID('16fd2706-8baf-433b-82eb-8c7fada847da')
>>> # make a UUID using a SHA-1 hash of a namespace UUID and a name
>>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')
UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')
>>> # make a UUID from a string of hex digits (braces and hyphens ignored)
>>> x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')
>>> # convert a UUID to a string of hex digits in standard form
>>> str(x)
'00010203-0405-0607-0809-0a0b0c0d0e0f'
>>> # get the raw 16 bytes of the UUID
>>> x.bytes
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
>>> # make a UUID from a 16-byte string
>>> uuid.UUID(bytes=x.bytes)
UUID('00010203-0405-0607-0809-0a0b0c0d0e0f')
© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.10/library/uuid.html