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 байт в порядке возрастания в качестве аргумента bytes, строки из 16 байт в порядке возрастания в качестве аргумента 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-байтовой строки (содержащей шесть целочисленных полей в порядке байтов по старшинству).
- UUID.bytes_le¶
UUID в виде 16-байтовой строки (с time_low, time_mid и time_hi_version в порядке убывания байтов).
- UUID.fields¶
Набор из шести целочисленных полей UUID, которые также доступны в виде шести отдельных атрибутов и двух производных атрибутов:
Поле |
Значение |
|
Первые 32 бита UUID. |
|
Следующие 16 бит UUID. |
|
Следующие 16 бит UUID. |
|
Следующие 8 бит UUID. |
|
Следующие 8 бит UUID. |
|
Последние 48 бит UUID. |
|
60-битная временная метка. |
|
14-разрядный порядковый номер. |
- UUID.hex¶
UUID представляет собой шестнадцатеричную строку из 32 символов в нижнем регистре.
- UUID.int¶
UUID - это 128-разрядное целое число.
- 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 на основе хэша SHA1 идентификатора пространства имен (который является 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.RESERVED_MICROSOFT¶
Зарезервировано для обеспечения совместимости с Microsoft.
- uuid.RESERVED_FUTURE¶
Зарезервировано для дальнейшего определения.
См.также
- RFC 4122 - Пространство имен URN с универсально уникальным идентификатором (UUID)
Эта спецификация определяет единое пространство имен ресурсов для 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')