Содержание страницы
uuid – объекты UUID согласно RFC 4122¶uuid – UUID objects according to RFC 4122
Этот модуль предоставляет неизменяемые объекты UUID (класс UUID) и функции uuid1(), uuid3(), uuid4(), uuid5() для создания UUID версий 1, 3, 4 и 5, как указано в RFC 4122.
Если нужен просто уникальный идентификатор, вероятно, стоит вызвать uuid1() или uuid4(). Обратите внимание: uuid1() может нарушать конфиденциальность, поскольку создаёт UUID, содержащий сетевой адрес компьютера. uuid4() создаёт случайный UUID.
- class uuid.UUID([hex[, bytes[, bytes_le[, fields[, int[, version]]]]]])¶
Создаёт UUID из строки из 32 шестнадцатеричных цифр, строки из 16 байт в качестве аргумента 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='\x12\x34\x56\x78'*4) UUID(bytes_le='\x78\x56\x34\x12\x34\x12\x78\x56' + '\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 будет иметь свой вариант (variant) и номер версии, установленные в соответствии с RFC 4122, переопределяя соответствующие биты в заданных hex, bytes, bytes_le, fields или int.
Экземпляры 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 time 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 определяет следующие функции:
- uuid.getnode()¶
- Получает аппаратный адрес в виде 48-битного положительного целого числа. При первом запуске может быть запущена отдельная программа, что может быть довольно медленным. Если все попытки получить аппаратный адрес не удались, выбирается случайное 48-битное число с восьмым битом, установленным в 1, как рекомендуется в RFC 4122. «Аппаратный адрес» означает MAC-адрес сетевого интерфейса, и на машине с несколькими сетевыми интерфейсами может быть возвращён MAC-адрес любого из них.
- uuid.uuid1([node[, clock_seq]])¶
- Генерирует 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)
- Данная спецификация определяет пространство имён универсальных имён ресурсов (URN) для UUID, их внутренний формат, а также методы генерации UUID.
Пример¶Example
Вот несколько примеров типичного использования модуля 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
'\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')