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 time
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-адреса (т.е. где 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')