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. Все сущности 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е скобки, дефисы и префикс URN являются необязательными. Например, все эти выражения yield один и тот же 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-байтового строка (содержащего шесть целых полей в порядке байтов big-endian).
-
UUID.bytes_le¶ UUID как 16-байтовый строка (с time_low, time_mid и time_hi_version в прямом порядоке байтов (little-endian).
-
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 time60-битная временная метка clock_seq14-разрядный порядковый номер
-
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-адреса (т.е. где unset второй младший бит первого октета) будут предпочтительнее локально администрируемых 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 на основе хэша SHA-1 идентификатора пространства имен (который является UUID) и имени (который является строка).
Модуль uuid определяет следующие идентификаторы пространства имен для
использования с uuid3() или uuid5().
-
uuid.NAMESPACE_DNS¶ Если указано это пространство имен, name строка является полным доменным именем.
-
uuid.NAMESPACE_URL¶ Если указано это пространство имен, name строка является URL- адресом.
-
uuid.NAMESPACE_OID¶ Если указано это пространство имен, name строка является OID ISO.
-
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 эта спецификация определяет однородное пространство имен имени ресурса для UUIDs, внутреннего формата UUIDs и методов создания UUIDs.
Пример¶
Ниже приведены некоторые примеры типичного использования модуля uuid:
>>> import uuid
>>> # создать UUID на основе идентификатора хоста и текущего времени
>>> uuid.uuid1()
UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')
>>> # сделать UUID используя хэш MD5 пространства имен UUID и имя
>>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')
UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')
>>> # создать случайный UUID
>>> uuid.uuid4()
UUID('16fd2706-8baf-433b-82eb-8c7fada847da')
>>> # сделать UUID используя хэш SHA-1 пространства имен UUID и имя
>>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')
UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')
>>> # создать UUID из строки шестнадцатеричных цифр (фигурные скобки и дефисы игнорируются)
>>> x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')
>>> # преобразование UUID в строка шестнадцатеричных цифр в стандартной форме
>>> str(x)
'00010203-0405-0607-0809-0a0b0c0d0e0f'
>>> # получить необработанные 16 байт UUID
>>> x.bytes
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
>>> # создать UUID из 16-байтовой строки
>>> uuid.UUID(bytes=x.bytes)
UUID('00010203-0405-0607-0809-0a0b0c0d0e0f')
