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_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.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 является 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 - Пространство имен 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–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.7/library/uuid.html