http://play.szmtp.com
http://vip.szmtp.com
http://p.szmtp.com
http://m.szmtp.com
http://zuqiu.szmtp.comUUID(Universally Unique Identifier)即通用唯一识别码,是一种标准化的128位标识符格式,通常由32个十六进制数字组成,以连字符分隔的五组显示(如:123e4567-e89b-12d3-a456-426614174000)。
Python的uuid模块提供了生成和操作UUID的功能,支持不同版本的UUID生成算法。UUID在分布式系统中特别有用,可以在不需要中央协调的情况下生成唯一标识符。
版本 | 名称 | 特点 | 适用场景 |
|---|---|---|---|
1 | 基于时间 | 使用主机MAC地址和时间戳 | 需要时间排序或历史追踪 |
3 | 基于名称的MD5哈希 | 使用命名空间和名称生成确定性UUID | 需要相同输入生成相同UUID |
4 | 随机生成 | 使用随机数生成 | 需要高随机性和安全性 |
5 | 基于名称的SHA-1哈希 | 类似于版本3但使用更安全的算法 | 需要相同输入生成相同UUID且更安全 |
UUID模块是Python标准库的一部分,无需额外安装:
import uuidimport uuid
# 生成基于时间的UUID
time_based_uuid = uuid.uuid1()
print("UUID1:", time_based_uuid)
print("版本:", time_based_uuid.version)
print("变体:", time_based_uuid.variant)import uuid
# 定义命名空间(使用预定义或自定义)
namespace = uuid.NAMESPACE_DNS # 使用DNS命名空间
# 基于名称生成UUID
name_based_uuid = uuid.uuid3(namespace, "example.com")
print("UUID3:", name_based_uuid)
print("版本:", name_based_uuid.version)import uuid
# 生成随机UUID
random_uuid = uuid.uuid4()
print("UUID4:", random_uuid)
print("版本:", random_uuid.version)import uuid
# 定义命名空间
namespace = uuid.NAMESPACE_URL # 使用URL命名空间
# 基于名称生成UUID
secure_name_uuid = uuid.uuid5(namespace, "https://python.org")
print("UUID5:", secure_name_uuid)
print("版本:", secure_name_uuid.version)import uuid
# 创建UUID对象
my_uuid = uuid.UUID('{123e4567-e89b-12d3-a456-426614174000}')
# 访问UUID属性
print("十六进制表示:", my_uuid.hex)
print("整数表示:", my_uuid.int)
print("字节表示:", my_uuid.bytes)
print("URN格式:", my_uuid.urn)
print("字段信息:", my_uuid.fields)uuid4()uuid3()或uuid5()理论上,UUID是唯一的,但概率极低。版本1和2在特定条件下可能重复,但版本4的随机UUID在可预见的未来几乎不可能重复。
两者都是基于名称生成确定性UUID,但版本3使用MD5哈希算法,而版本5使用更安全的SHA-1哈希算法。
- 需要随机性:使用uuid4() - 需要基于名称生成:优先使用uuid5() - 需要时间信息:使用uuid1() - 需要向后兼容:使用uuid3()
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。