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.
-
class uuid.UUID(hex=None, bytes=None, bytes_le=None, fields=None, int=None, version=None) -
Создаёт 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_seqномера последовательности в 14 бит
-
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 определяет следующие функции:
-
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.RFC_4122 -
Определяет структуру UUID, указанную в RFC 4122.
-
uuid.RESERVED_MICROSOFT -
Зарезервировано для совместимости с Microsoft.
-
uuid.RESERVED_FUTURE -
Зарезервировано для будущего определения.
См. также
- RFC 4122 - Пространство имён URN для универсальных идентификаторов (UUID)
-
Этот документ определяет пространство имён Uniform Resource Name для UUID, внутренний формат UUID и методы генерации UUID.
21.20.1. Пример
Вот несколько примеров типичного использования модуля 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–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.6/library/uuid.html