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-байтовой строки (содержащей шесть целочисленных полей в порядке возрастания байтов).
-
UUID.
bytes_le
¶ UUID в виде 16-байтовой строки (с time_low, time_mid и time_hi_version в порядке младших байтов).
-
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.
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-адреса предпочтительнее локально администрируемых, поскольку первые гарантированно глобально уникальны, а вторые - нет.
-
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.
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')