Документация Python неофициальный перевод

uuid.md

211 строк · 15.4 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.10/library/uuid.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# [`uuid`](https://python-all.ru/3.10/library/uuid.html#module-uuid) – объекты UUID согласно [**RFC 4122**](https://python-all.ru/3.10/library/uuid.html)89**Исходный код:** [Lib/uuid.py](https://python-all.ru/src/3.10/Lib/uuid.py)1011---1213This module provides immutable [`UUID`](https://python-all.ru/3.10/library/uuid.html#uuid.UUID) objects (the [`UUID`](https://python-all.ru/3.10/library/uuid.html#uuid.UUID) class) and the functions [`uuid1()`](https://python-all.ru/3.10/library/uuid.html#uuid.uuid1), [`uuid3()`](https://python-all.ru/3.10/library/uuid.html#uuid.uuid3), [`uuid4()`](https://python-all.ru/3.10/library/uuid.html#uuid.uuid4), [`uuid5()`](https://python-all.ru/3.10/library/uuid.html#uuid.uuid5) for generating version 1, 3, 4, and 5 UUIDs as specified in [**RFC 4122**](https://python-all.ru/3.10/library/uuid.html).1415Если вам нужен просто уникальный идентификатор, скорее всего, стоит вызвать [`uuid1()`](https://python-all.ru/3.10/library/uuid.html#uuid.uuid1) или [`uuid4()`](https://python-all.ru/3.10/library/uuid.html#uuid.uuid4). Обратите внимание, что [`uuid1()`](https://python-all.ru/3.10/library/uuid.html#uuid.uuid1) может нарушить конфиденциальность, так как создаёт UUID, содержащий сетевой адрес компьютера. [`uuid4()`](https://python-all.ru/3.10/library/uuid.html#uuid.uuid4) создаёт случайный UUID.1617В зависимости от поддержки базовой платформы, [`uuid1()`](https://python-all.ru/3.10/library/uuid.html#uuid.uuid1) может возвращать или не возвращать «безопасный» UUID. Безопасный UUID – это UUID, сгенерированный с использованием методов синхронизации, которые гарантируют, что никакие два процесса не смогут получить одинаковый UUID. Все экземпляры [`UUID`](https://python-all.ru/3.10/library/uuid.html#uuid.UUID) имеют атрибут `is_safe`, который передаёт любую информацию о безопасности UUID, используя это перечисление:1819#### `class uuid.SafeUUID`2021Добавлено в версии 3.7.2223#### `safe`2425UUID был сгенерирован платформой способом, безопасным для многопроцессорной работы.2627#### `unsafe`2829UUID не был сгенерирован способом, безопасным для многопроцессорной работы.3031#### `unknown`3233Платформа не предоставляет информацию о том, был ли UUID сгенерирован безопасно или нет.3435#### `class uuid.UUID(hex=None, bytes=None, bytes_le=None, fields=None, int=None, version=None, *, is_safe=SafeUUID.unknown)`3637Создаёт 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:3839```python40UUID('{12345678-1234-5678-1234-567812345678}')41UUID('12345678123456781234567812345678')42UUID('urn:uuid:12345678-1234-5678-1234-567812345678')43UUID(bytes=b'\x12\x34\x56\x78'*4)44UUID(bytes_le=b'\x78\x56\x34\x12\x34\x12\x78\x56' +45              b'\x12\x34\x56\x78\x12\x34\x56\x78')46UUID(fields=(0x12345678, 0x1234, 0x5678, 0x12, 0x34, 0x567812345678))47UUID(int=0x12345678123456781234567812345678)48```4950Должен быть указан ровно один из параметров: *hex*, *bytes*, *bytes\_le*, *fields* или *int*. Аргумент *version* необязателен; если он указан, результирующий UUID получит свои variant и version number, установленные согласно [**RFC 4122**](https://python-all.ru/3.10/library/uuid.html), переопределяя биты в указанных *hex*, *bytes*, *bytes\_le*, *fields* или *int*.5152Сравнение объектов UUID осуществляется путём сравнения их атрибутов [`UUID.int`](https://python-all.ru/3.10/library/uuid.html#uuid.UUID.int). Сравнение с объектом, не являющимся UUID, вызывает исключение [`TypeError`](https://python-all.ru/3.10/library/exceptions.html#TypeError).5354`str(uuid)` возвращает строку в формате `12345678-1234-5678-1234-567812345678`, где 32 шестнадцатеричные цифры представляют UUID.5556Экземпляры [`UUID`](https://python-all.ru/3.10/library/uuid.html#uuid.UUID) имеют следующие атрибуты только для чтения:5758#### `UUID.bytes`5960UUID в виде 16-байтовой строки (содержащей шесть целочисленных полей в порядке байтов от старшего к младшему).6162#### `UUID.bytes_le`6364UUID в виде 16-байтовой строки (с *time\_low*, *time\_mid* и *time\_hi\_version* в порядке байтов от младшего к старшему).6566#### `UUID.fields`6768Кортеж из шести целочисленных полей UUID, которые также доступны в виде шести отдельных атрибутов и двух производных атрибутов:6970| Поле | Значение |71| --- | --- |72| `time_low` | первые 32 бита UUID |73| `time_mid` | следующие 16 бит UUID |74| `time_hi_version` | следующие 16 бит UUID |75| `clock_seq_hi_variant` | следующие 8 бит UUID |76| `clock_seq_low` | следующие 8 бит UUID |77| `node` | последние 48 бит UUID |78| [`time`](https://python-all.ru/3.10/library/time.html#module-time) | 60-битная метка времени |79| `clock_seq` | 14-битный номер последовательности |8081#### `UUID.hex`8283UUID в виде 32-символьной шестнадцатеричной строки в нижнем регистре.8485#### `UUID.int`8687UUID в виде 128-битного целого числа.8889#### `UUID.urn`9091UUID в виде URN, как указано в [**RFC 4122**](https://python-all.ru/3.10/library/uuid.html).9293#### `UUID.variant`9495Вариант UUID, определяющий внутреннюю структуру UUID. Это будет одна из констант [`RESERVED_NCS`](https://python-all.ru/3.10/library/uuid.html#uuid.RESERVED_NCS), [`RFC_4122`](https://python-all.ru/3.10/library/uuid.html#uuid.RFC_4122), [`RESERVED_MICROSOFT`](https://python-all.ru/3.10/library/uuid.html#uuid.RESERVED_MICROSOFT) или [`RESERVED_FUTURE`](https://python-all.ru/3.10/library/uuid.html#uuid.RESERVED_FUTURE).9697#### `UUID.version`9899Номер версии UUID (от 1 до 5, имеет смысл только когда variant равен [`RFC_4122`](https://python-all.ru/3.10/library/uuid.html#uuid.RFC_4122)).100101#### `UUID.is_safe`102103Перечисление [`SafeUUID`](https://python-all.ru/3.10/library/uuid.html#uuid.SafeUUID), указывающее, сгенерировала ли платформа UUID безопасным для многопроцессной работы способом.104105Добавлено в версии 3.7.106107Модуль [`uuid`](https://python-all.ru/3.10/library/uuid.html#module-uuid) определяет следующие функции:108109#### `uuid.getnode()`110111Получает аппаратный адрес в виде 48-битного положительного целого числа. При первом запуске он может запустить отдельную программу, что может быть довольно медленно. Если все попытки получить аппаратный адрес не удались, выбирается случайное 48-битное число с установленным битом многоадресной передачи (наименее значимый бит первого октета) в 1, как рекомендовано в [**RFC 4122**](https://python-all.ru/3.10/library/uuid.html). «Аппаратный адрес» означает MAC-адрес сетевого интерфейса. На машине с несколькими сетевыми интерфейсами универсально управляемые MAC-адреса (т.е. где второй наименее значимый бит первого октета *сброшен*) будут предпочтительнее локально управляемых MAC-адресов, но без других гарантий порядка.112113Изменено в версии 3.7: Универсально управляемые MAC-адреса предпочтительнее локально управляемых MAC-адресов, поскольку первые гарантированно\\нглобально уникальны, а вторые – нет.114115#### `uuid.uuid1(node=None, clock_seq=None)`116117Генерирует UUID на основе идентификатора хоста, порядкового номера и текущего времени. Если *node* не указан, для получения аппаратного адреса используется [`getnode()`](https://python-all.ru/3.10/library/uuid.html#uuid.getnode). Если указан *clock\_seq*, он используется как порядковый номер; в противном случае выбирается случайный 14-битный порядковый номер.118119#### `uuid.uuid3(namespace, name)`120121Генерирует UUID на основе MD5-хеша идентификатора пространства имён (который является UUID) и имени (которое является строкой).122123#### `uuid.uuid4()`124125Генерирует случайный UUID.126127#### `uuid.uuid5(namespace, name)`128129Генерирует UUID на основе SHA-1-хеша идентификатора пространства имён (который является UUID) и имени (которое является строкой).130131Модуль [`uuid`](https://python-all.ru/3.10/library/uuid.html#module-uuid) определяет следующие идентификаторы пространств имён для использования с [`uuid3()`](https://python-all.ru/3.10/library/uuid.html#uuid.uuid3) или [`uuid5()`](https://python-all.ru/3.10/library/uuid.html#uuid.uuid5).132133#### `uuid.NAMESPACE_DNS`134135Если указано это пространство имён, строка *name* является полным доменным именем.136137#### `uuid.NAMESPACE_URL`138139Если указано это пространство имён, строка *name* является URL.140141#### `uuid.NAMESPACE_OID`142143Если указано это пространство имён, строка *name* является ISO OID.144145#### `uuid.NAMESPACE_X500`146147Если указано это пространство имён, строка *name* является X.500 DN в формате DER или текстовом формате вывода.148149Модуль [`uuid`](https://python-all.ru/3.10/library/uuid.html#module-uuid) определяет следующие константы для возможных значений атрибута `variant`:150151#### `uuid.RESERVED_NCS`152153Зарезервировано для совместимости с NCS.154155#### `uuid.RFC_4122`156157Определяет структуру UUID, описанную в [**RFC 4122**](https://python-all.ru/3.10/library/uuid.html).158159#### `uuid.RESERVED_MICROSOFT`160161Зарезервировано для совместимости с Microsoft.162163#### `uuid.RESERVED_FUTURE`164165Зарезервировано для будущего определения.166167> **См. также**168>169> **[**RFC 4122**](https://python-all.ru/3.10/library/uuid.html) – пространство имён URN для универсального уникального идентификатора (UUID)**170>171> Данная спецификация определяет пространство имён универсальных имён ресурсов (URN) для UUID, их внутренний формат, а также методы генерации UUID.172173## Пример174175Вот несколько примеров типичного использования модуля [`uuid`](https://python-all.ru/3.10/library/uuid.html#module-uuid):176177```python178>>> import uuid179180>>> # создать UUID на основе идентификатора хоста и текущего времени181>>> uuid.uuid1()182UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')183184>>> # создать UUID с использованием MD5-хеша UUID пространства имён и имени185>>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')186UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')187188>>> # создать случайный UUID189>>> uuid.uuid4()190UUID('16fd2706-8baf-433b-82eb-8c7fada847da')191192>>> # создать UUID с использованием SHA-1-хеша UUID пространства имён и имени193>>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')194UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')195196>>> # создать UUID из строки шестнадцатеричных цифр (фигурные скобки и дефисы игнорируются)197>>> x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')198199>>> # преобразовать UUID в строку шестнадцатеричных цифр стандартного вида200>>> str(x)201'00010203-0405-0607-0809-0a0b0c0d0e0f'202203>>> # получить сырые 16 байт UUID204>>> x.bytes205b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'206207>>> # создать UUID из 16-байтовой строки208>>> uuid.UUID(bytes=x.bytes)209UUID('00010203-0405-0607-0809-0a0b0c0d0e0f')210```211