uuid
— UUID objects according to RFC 4122¶
Вихідний код: Lib/uuid.py
Цей модуль надає незмінні об’єкти UUID
(клас UUID
) і функції uuid1()
, uuid3()
, uuid4()
, uuid5()
для генерації UUID версій 1, 3, 4 і 5, як зазначено в RFC 4122.
Якщо все, що вам потрібно, це унікальний ідентифікатор, ви, ймовірно, повинні викликати uuid1()
або uuid4()
. Зауважте, що uuid1()
може порушувати конфіденційність, оскільки створює UUID, що містить мережеву адресу комп’ютера. uuid4()
створює випадковий UUID.
Depending on support from the underlying platform, uuid1()
may or may
not return a «safe» UUID. A safe UUID is one which is generated using
synchronization methods that ensure no two processes can obtain the same
UUID. All instances of UUID
have an is_safe
attribute
which relays any information about the UUID’s safety, using this enumeration:
- 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, які також доступні як шість окремих атрибутів і два похідних атрибути:
Поле |
Значення |
|
The first 32 bits of the UUID. |
|
The next 16 bits of the UUID. |
|
The next 16 bits of the UUID. |
|
The next 8 bits of the UUID. |
|
The next 8 bits of the UUID. |
|
The last 48 bits of the UUID. |
|
The 60-bit timestamp. |
|
The 14-bit sequence number. |
- UUID.hex¶
UUID як 32-символьний шістнадцятковий рядок у нижньому регістрі.
- UUID.int¶
UUID як 128-бітне ціле число.
- UUID.variant¶
Варіант UUID, який визначає внутрішнє розташування UUID. Це буде одна з констант
RESERVED_NCS
,RFC_4122
,RESERVED_MICROSOFT
абоRESERVED_FUTURE
.
- UUID.is_safe¶
Перелік
SafeUUID
, який вказує, чи платформа згенерувала UUID безпечним для багатьох процесів способом.Нове в версії 3.7.
Модуль uuid
визначає такі функції:
- uuid.getnode()¶
Отримайте апаратну адресу як 48-розрядне позитивне ціле число. Під час першого запуску може запустити окрему програму, яка може працювати досить повільно. Якщо всі спроби отримати апаратну адресу зазнають невдачі, ми вибираємо випадкове 48-бітове число з бітом багатоадресної передачі (молодший значущий біт першого октету), встановленим на 1, як рекомендовано в 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)¶
Generate a UUID based on the MD5 hash of a namespace identifier (which is a UUID) and a name (which is a string).
- uuid.uuid4()¶
Згенеруйте випадковий UUID.
- uuid.uuid5(namespace, name)¶
Generate a UUID based on the SHA-1 hash of a namespace identifier (which is a UUID) and a name (which is a string).
Модуль uuid
визначає наступні ідентифікатори простору імен для використання з uuid3()
або uuid5()
.
- uuid.NAMESPACE_DNS¶
When this namespace is specified, the name string is a fully qualified domain name.
- uuid.NAMESPACE_URL¶
Якщо вказано цей простір імен, рядок name є URL-адресою.
- uuid.NAMESPACE_OID¶
Якщо вказано цей простір імен, рядок name є ідентифікатором ISO OID.
- uuid.NAMESPACE_X500¶
Якщо вказано цей простір імен, рядок name є X.500 DN у DER або текстовому форматі виводу.
The uuid
module defines the following constants for the possible values
of the variant
attribute:
- uuid.RESERVED_NCS¶
Зарезервовано для сумісності з NCS.
- uuid.RESERVED_MICROSOFT¶
Зарезервовано для сумісності з Microsoft.
- uuid.RESERVED_FUTURE¶
Зарезервовано для майбутнього визначення.
Дивись також
- RFC 4122 - простір імен URN універсального унікального ідентифікатора (UUID)
Ця специфікація визначає простір імен Uniform Resource Name для UUID, внутрішній формат UUID і методи генерації UUID.
приклад¶
Ось декілька прикладів типового використання модуля 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')