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')