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 байтов в качестве аргумента 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 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.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.
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.5/library/uuid.html