Python中uuid模块生成唯一标识符详解

云舒
云舒
发布时间:2026-10-13| 6人浏览过
原创

本文详细介绍Python内置uuid模块的用法,涵盖基于MAC地址和时间戳的uuid1、基于随机数的uuid4以及基于命名空间和名称的uuid3/uuid5。通过官方示例代码演示如何生成32位哈希值及标准UUID字符串,帮助开发者在项目中快速实现唯一ID生成。

UUID与Python uuid模块简介

UUID(Universally Unique Identifier,通用唯一识别码)是一个128位的标识符,通常表示为32个字符组成的字符串格式。

它有时也被称作GUID(Global Unique Identifier,全局唯一标识符)。Python标准库中内置了uuid模块,用于生成和管理UUID。

核心生成方法详解

Python的uuid模块基于多种信息源来生成UUID,包括MAC地址、时间戳、命名空间、随机数或伪随机数。具体提供的方法如下:

uuid.uuid1():该方法基于主机的MAC地址、当前时间戳以及随机数生成UUID,旨在确保全球范围内的唯一性。

uuid.uuid2():其算法逻辑与uuid1相同,区别在于将时间戳的前4位替换为POSIX的UID。需要注意的是,由于Python标准库中未实现基于DCE(Distributed Computing Environment)的算法,因此Python的uuid模块中并不包含uuid2这一方法。

uuid.uuid3(namespace, name):通过计算指定命名空间(namespace)和名称(name)的MD5散列值来生成UUID。这保证了在同一命名空间下,不同的名称会生成不同的UUID;若名称相同,则生成的UUID也相同。需要澄清的是,namespace并非由用户手动指定的任意字符串,而是uuid模块中预定义的标准值,例如uuid.NAMESPACE_DNS、uuid.NAMESPACE_OID等。这些预定义值本身也是UUID对象,依据特定规则计算得出。

uuid.uuid4():该方法利用伪随机数生成UUID。由于随机数的特性,理论上存在极小的概率导致生成的UUID重复。

uuid.uuid5(namespace, name):其功能与uuid3基本一致,主要区别在于采用的散列算法是SHA-1而非MD5。

代码示例与使用

通常情况下,若对UUID的需求不涉及复杂的命名空间规则,使用uuid1方法已足够满足需求。具体调用方式如下文代码所示:


#coding=utf-8
 
import uuid
 
name = 'test_name'
# namespace = 'test_namespace'
namespace = uuid.NAMESPACE_URL
 
print uuid.uuid1()
print uuid.uuid3(namespace,name)
print uuid.uuid4()

以下是Python官方文档提供的参考示例,展示了不同方法的实际输出结果:


>>> 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')

生成32位哈希值示例:


uuid.uuid4().hex
Out[3]: 
'28128f59692242b2854ece961ea1dd35'

如需了解更多关于Python使用uuid库生成唯一标识ID的内容,可点击相关链接查阅。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。