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 есть атрибут 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-адреса предпочтительнее локально назначенных 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 -
Когда указан этот namespace, строка 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 - Пространство имён URI для универсального идентификатора (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–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/library/uuid.html