import uuid uuid.uuid4()
Функция uuid4()
модуля uuid
генерирует случайный UUID и возвращает объект UUID
. Для преобразования объекта UUID
в строку используйте встроенную функцию str()
.
Иногда значения UUID на основе хоста и пространства имен не являются достаточно разными. Например, в случаях, когда UUID предназначен для использования в качестве хеш-ключа, желательно использовать более случайную последовательность значений с большей дифференциацией, чтобы избежать коллизий в хеш-таблице. Наличие значений с меньшим количеством общих цифр также облегчает их поиск в файлах журналов.
Чтобы добавить большую дифференциацию в UUID используйте uuid.uuid4()
для их генерации с использованием случайных входных значений.
Источник случайности зависит от того, какие библиотеки языка C доступны при импорте модуля uuid
. Если библиотеки libuuid
или uuid.dll
могут быть загружены, то они будут использоваться для генерации случайных значений. В противном случае используются функция os.urandom()
или случайный модуль.
import uuid for i in range(5): print(uuid.uuid4()) # 3beeb1f1-2ec2-475e-bd38-4952f2e4235b # 2831e77b-463d-4678-b261-cb52684db28a # f12fa086-3655-425a-8c82-86d7c815c021 # 110695f4-292c-4bff-98de-c45d39994726 # cce70000-91d0-4f51-81a1-a7b18877b5f3
Преобразование объекта UUID
в строку:
>>> import uuid >>> uid = uuid.uuid4() >>> uid # UUID('4e7c09ff-f69e-45f0-8285-99f80a289320') >>> str(uid) # '4e7c09ff-f69e-45f0-8285-99f80a289320'
Доступ к компонентам объекта UUID. Атрибуты hex
, int
и urn
являются различными представлениями значения UUID.
>>> import uuid >>> uid = uuid.uuid4() >>> uid.bytes # b'\x14)\xfe\xc4&\xc9@P\xb6x\xccm\xf2\x0es+' >>> uid.hex # '1429fec426c94050b678cc6df20e732b' >>> uid.int # 26802611359661153894240309005953954603 >>> uid.urn # 'urn:uuid:1429fec4-26c9-4050-b678-cc6df20e732b' >>> uid.variant # 'specified in RFC 4122' >>> uid.version # 4 >>> uid.fields # (338296516, 9929, 16464, 182, 120, 224772584534827) >>> uid.time_low # 338296516 >>> uid.time_mid # 9929 >>> uid.time_hi_version # 16464 >>> uid.clock_seq_hi_variant # 182 >>> uid.clock_seq_low # 120 >>> uid.time # 22560643205430980 >>> uid.clock_seq # 13944