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 являются необязательными. Например, эти выражения все дают тот же 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, которые также доступны как шесть отдельных атрибутов и два производных атрибута:
Поле | Значение |
| Первые 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-битное число с установленным битом многоадресной рассылки (самый младший бит первого октета), как рекомендовано в RFC 4122. «Аппаратный адрес» означает MAC-адрес сетевого интерфейса. На машине с несколькими сетевыми интерфейсами будут предпочтительны универсально назначенные MAC-адреса (то есть, где второй наименее значимый бит первого октета сброшен), по сравнению с локально назначенными 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) и имени (которое является объектом
bytesили строкой, которая будет закодирована с помощью UTF-8).
-
uuid.uuid4() -
Генерирует случайный UUID.
-
uuid.uuid5(namespace, name) -
Генерирует UUID на основе хэша SHA-1 идентификатора пространства имён (который является UUID) и имени (которое является объектом
bytesили строкой, которая будет закодирована с помощью UTF-8).
Модуль uuid определяет следующие идентификаторы пространства имён для использования с uuid3() или uuid5().
-
uuid.NAMESPACE_DNS -
При указании этого пространства имён строка имя является полным доменным именем.
-
uuid.NAMESPACE_URL -
При указании этого пространства имён строка имя является URL-адресом.
-
uuid.NAMESPACE_OID -
При указании этого пространства имён строка имя является ISO OID.
-
uuid.NAMESPACE_X500 -
При указании этого пространства имён строка имя является 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.13/library/uuid.html