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 байтов в порядке от старшего к младшему в аргументе 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.urn -
UUID в виде URN согласно RFC 4122.
-
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-адресам (то есть адресам, у которых второй наименее значащий бит первого октета не установлен), а не локально администрируемым; другие гарантии порядка отсутствуют.
Изменено в версии 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 является OID стандарта ISO.
-
uuid.NAMESPACE_X500 -
Если указано это пространство имён, строка name является DN формата X.500 в DER или в текстовом формате вывода.
Модуль uuid определяет следующие константы для возможных значений атрибута variant:
-
uuid.RESERVED_NCS -
Зарезервировано для совместимости с NCS.
-
uuid.RFC_4122 -
Задаёт структуру UUID, определённую в RFC 4122.
-
uuid.RESERVED_MICROSOFT -
Зарезервировано для совместимости с Microsoft.
-
uuid.RESERVED_FUTURE -
Зарезервировано для будущего определения.
См. также
- RFC 4122 — пространство имён URN для универсального уникального идентификатора (UUID)
-
В этой спецификации определены пространство имён Uniform Resource Name для UUID, внутренний формат UUID и методы генерации UUID.
Использование командной строки
Добавлено в версии 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
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/library/uuid.html