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-адреса предпочтительнее локально управляемых 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 - Пространство имен 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.9/library/uuid.html