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-адресам (то есть адресам, у которых второй наименее значимый бит первого октета не установлен) перед локально администрируемыми 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 представляет собой 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)
-
Эта спецификация определяет пространство имён URN для 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–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/uuid.html