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¶
Added in version 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 безопасным для многопроцессорной обработки способом.Added in version 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) и имени (которое является объектом
bytes
или строкой, которая будет закодирована с помощью UTF-8).
- uuid.uuid4()¶
Сгенерируйте случайный UUID.
- uuid.uuid5(namespace, name)¶
Сгенерируйте UUID на основе SHA-1 хэша идентификатора пространства имен (который является UUID) и имени (которое является объектом
bytes
или строкой, которая будет закодирована с помощью UTF-8).
Модуль 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 - Универсальный уникальный идентификатор (UUID) Пространство имен URN
Эта спецификация определяет пространство имен Uniform Resource Name для UUID, внутренний формат UUID и методы генерации UUID.
Использование командной строки¶
Added in version 3.12.
Модуль uuid
может быть выполнен как сценарий из командной строки.
python -m uuid [-h] [-u {uuid1,uuid3,uuid4,uuid5}] [-n NAMESPACE] [-N NAME]
Принимаются следующие варианты:
- -h, --help¶
Покажите сообщение о помощи и выйдите.
- -u <uuid>¶
- --uuid <uuid>¶
Укажите имя функции, которую следует использовать для генерации uuid. По умолчанию используется
uuid4()
.
Пример¶
Вот несколько примеров типичного использования модуля 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')
Пример командной строки¶
Вот несколько примеров типичного использования интерфейса командной строки uuid
:
# generate a random uuid - by default uuid4() is used
$ python -m uuid
# generate a uuid using uuid1()
$ python -m uuid -u uuid1
# generate a uuid using uuid5
$ python -m uuid -u uuid5 -n @url -N example.com