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

uuid.md

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

1> **Источник:** https://python-all.ru/3.1/library/uuid.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 20.18. `uuid` – объекты UUID согласно RFC 412289Этот модуль предоставляет неизменяемые объекты [`UUID`](https://python-all.ru/3.1/library/uuid.html#uuid.UUID) (класс [`UUID`](https://python-all.ru/3.1/library/uuid.html#uuid.UUID)) и функции [`uuid1()`](https://python-all.ru/3.1/library/uuid.html#uuid.uuid1), [`uuid3()`](https://python-all.ru/3.1/library/uuid.html#uuid.uuid3), [`uuid4()`](https://python-all.ru/3.1/library/uuid.html#uuid.uuid4), [`uuid5()`](https://python-all.ru/3.1/library/uuid.html#uuid.uuid5) для создания UUID версий 1, 3, 4 и 5, как указано в [**RFC 4122**](https://python-all.ru/3.1/library/uuid.html).1011Если нужен просто уникальный идентификатор, вероятно, стоит вызвать [`uuid1()`](https://python-all.ru/3.1/library/uuid.html#uuid.uuid1) или [`uuid4()`](https://python-all.ru/3.1/library/uuid.html#uuid.uuid4). Обратите внимание: [`uuid1()`](https://python-all.ru/3.1/library/uuid.html#uuid.uuid1) может нарушать конфиденциальность, поскольку создаёт UUID, содержащий сетевой адрес компьютера. [`uuid4()`](https://python-all.ru/3.1/library/uuid.html#uuid.uuid4) создаёт случайный UUID.1213#### `class uuid.UUID(hex=None, bytes=None, bytes_le=None, fields=None, int=None, version=None)`1415Создаёт UUID из строки из 32 шестнадцатеричных цифр, строки из 16 байт в качестве аргумента *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:1617```python18UUID('{12345678-1234-5678-1234-567812345678}')19UUID('12345678123456781234567812345678')20UUID('urn:uuid:12345678-1234-5678-1234-567812345678')21UUID(bytes=b'\x12\x34\x56\x78'*4)22UUID(bytes_le=b'\x78\x56\x34\x12\x34\x12\x78\x56' +23              b'\x12\x34\x56\x78\x12\x34\x56\x78')24UUID(fields=(0x12345678, 0x1234, 0x5678, 0x12, 0x34, 0x567812345678))25UUID(int=0x12345678123456781234567812345678)26```2728Должен быть указан ровно один из параметров: *hex*, *bytes*, *bytes\_le*, *fields* или *int*. Параметр *version* необязателен; если он задан, результирующий UUID будет иметь свой вариант (variant) и номер версии, установленные в соответствии с RFC 4122, переопределяя соответствующие биты в заданных *hex*, *bytes*, *bytes\_le*, *fields* или *int*.2930Экземпляры [`UUID`](https://python-all.ru/3.1/library/uuid.html#uuid.UUID) имеют следующие атрибуты только для чтения:3132#### `UUID.bytes`3334UUID в виде 16-байтовой строки (содержащей шесть целочисленных полей в порядке байтов от старшего к младшему).3536#### `UUID.bytes_le`3738UUID в виде 16-байтовой строки (с3940*time\_low*4142,4344*time\_mid*4546и4748*time\_hi\_version*4950в порядке байтов от младшего к старшему).5152#### `UUID.fields`5354Кортеж из шести целочисленных полей UUID, которые также доступны в виде шести отдельных атрибутов и двух производных атрибутов:5556| Поле | Значение |57| --- | --- |58| `time_low` | первые 32 бита UUID |59| `time_mid` | следующие 16 бит UUID |60| `time_hi_version` | следующие 16 бит UUID |61| `clock_seq_hi_variant` | следующие 8 бит UUID |62| `clock_seq_low` | следующие 8 бит UUID |63| `node` | последние 48 бит UUID |64| `time` | 60-битная метка времени |65| `clock_seq` | 14-битный номер последовательности |6667#### `UUID.hex`6869UUID как 32-символьная шестнадцатеричная строка.7071#### `UUID.int`7273UUID в виде 128-битного целого числа.7475#### `UUID.urn`7677UUID в виде URN, как указано в RFC 4122.7879#### `UUID.variant`8081Вариант UUID, определяющий внутреннюю структуру UUID. Он может быть одной из целочисленных констант8283[`RESERVED_NCS`](https://python-all.ru/3.1/library/uuid.html#uuid.RESERVED_NCS)8485,8687[`RFC_4122`](https://python-all.ru/3.1/library/uuid.html#uuid.RFC_4122)8889,9091[`RESERVED_MICROSOFT`](https://python-all.ru/3.1/library/uuid.html#uuid.RESERVED_MICROSOFT)9293или9495[`RESERVED_FUTURE`](https://python-all.ru/3.1/library/uuid.html#uuid.RESERVED_FUTURE)9697.9899#### `UUID.version`100101Номер версии UUID (от 1 до 5, имеет смысл только если вариант –102103[`RFC_4122`](https://python-all.ru/3.1/library/uuid.html#uuid.RFC_4122)104105).106107Модуль `uuid` определяет следующие функции:108109#### `uuid.getnode()`110111Получает аппаратный адрес в виде 48-битного положительного целого числа. При первом запуске может быть запущена отдельная программа, что может быть довольно медленным. Если все попытки получить аппаратный адрес не удались, выбирается случайное 48-битное число с восьмым битом, установленным в 1, как рекомендуется в RFC 4122. «Аппаратный адрес» означает MAC-адрес сетевого интерфейса, и на машине с несколькими сетевыми интерфейсами может быть возвращён MAC-адрес любого из них.112113#### `uuid.uuid1(node=None, clock_seq=None)`114115Генерирует UUID на основе идентификатора хоста, порядкового номера и текущего времени. Если116117*node*118119не указан, для получения аппаратного адреса используется120121[`getnode()`](https://python-all.ru/3.1/library/uuid.html#uuid.getnode)122123. Если124125*clock\_seq*126127указан, он используется как порядковый номер; в противном случае выбирается случайный 14-битный порядковый номер.128129#### `uuid.uuid3(namespace, name)`130131Генерирует UUID на основе MD5-хеша идентификатора пространства имён (который является UUID) и имени (которое является строкой).132133#### `uuid.uuid4()`134135Генерирует случайный UUID.136137#### `uuid.uuid5(namespace, name)`138139Генерирует UUID на основе SHA-1-хеша идентификатора пространства имён (который является UUID) и имени (которое является строкой).140141Модуль `uuid` определяет следующие идентификаторы пространств имён для использования с [`uuid3()`](https://python-all.ru/3.1/library/uuid.html#uuid.uuid3) или [`uuid5()`](https://python-all.ru/3.1/library/uuid.html#uuid.uuid5).142143#### `uuid.NAMESPACE_DNS`144145Когда указано это пространство имён, строка146147*name*148149является полным доменным именем.150151#### `uuid.NAMESPACE_URL`152153Если указано это пространство имён, строка154155*name*156157является URL.158159#### `uuid.NAMESPACE_OID`160161Если указано это пространство имён, строка162163*name*164165является ISO OID.166167#### `uuid.NAMESPACE_X500`168169Если указано это пространство имён, строка170171*name*172173является X.500 DN в формате DER или текстовом формате вывода.174175Модуль `uuid` определяет следующие константы для возможных значений атрибута `variant`:176177#### `uuid.RESERVED_NCS`178179Зарезервировано для совместимости с NCS.180181#### `uuid.RFC_4122`182183Определяет структуру UUID, описанную в184185[**RFC 4122**](https://python-all.ru/3.1/library/uuid.html)186187.188189#### `uuid.RESERVED_MICROSOFT`190191Зарезервировано для совместимости с Microsoft.192193#### `uuid.RESERVED_FUTURE`194195Зарезервировано для будущего определения.196197> **См. также**198>199> **[**RFC 4122**](https://python-all.ru/3.1/library/uuid.html) – пространство имён URN для универсального уникального идентификатора (UUID)**200>201> Данная спецификация определяет пространство имён универсальных имён ресурсов (URN) для UUID, их внутренний формат, а также методы генерации UUID.202203## 20.18.1. Пример204205Вот несколько примеров типичного использования модуля `uuid`:206207```python208>>> import uuid209210# make a UUID based on the host ID and current time211>>> uuid.uuid1()212UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')213214# make a UUID using an MD5 hash of a namespace UUID and a name215>>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')216UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')217218# make a random UUID219>>> uuid.uuid4()220UUID('16fd2706-8baf-433b-82eb-8c7fada847da')221222# make a UUID using a SHA-1 hash of a namespace UUID and a name223>>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')224UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')225226# make a UUID from a string of hex digits (braces and hyphens ignored)227>>> x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')228229# convert a UUID to a string of hex digits in standard form230>>> str(x)231'00010203-0405-0607-0809-0a0b0c0d0e0f'232233# get the raw 16 bytes of the UUID234>>> x.bytes235b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'236237# make a UUID from a 16-byte string238>>> uuid.UUID(bytes=x.bytes)239UUID('00010203-0405-0607-0809-0a0b0c0d0e0f')240```241