本文共 1583 字,大约阅读时间需要 5 分钟。
ANCED reason for using UUIDs is that many applications need a unique identifier without any specific meaning, often used for database fields or dynamic UI elements in front-end libraries.
uuid.uuid1([node[, clock_seq]]):基于主机ID、序列号和当前时间生成UUID。
如果未指定node参数,会自动获取主机的硬件地址(通过getnode()函数)。如果未指定clock_seq,系统会使用随机生成的14位序列号。该方法生成的UUID包含了主机的网络地址,因此可能存在隐私问题。uuid.uuid3(namespace, name):通过计算命名空间和名称的MD5散列值生成UUID。
这种方法可以确保同一命名空间中的不同名称生成唯一的UUID,同时不同命名空间的UUID也具有唯一性。需要注意的是,同一命名空间中的相同名称会生成相同的UUID。uuid.uuid4():基于随机数生成UUID。
该函数使用伪随机数,由于产生随机数的机制,存在一定的重复概率。uuid.uuid5(namespace, name):通过计算命名空间和名称的SHA-1散列值生成UUID。
该方法与uuid.uuid3()相似,算法实现相同。import uuid# 基于主机ID和当前时间生成UUIDuuid.uuid1() # 返回一个类似 "a8098c1a-f86e-11da-bd1a-00112444be1e" 的UUID# 使用命名空间的MD5散列值和网站名称生成UUIDuuid.uuid3(uuid.NAMESPACE_DNS, 'python.org') # 返回一个类似 "6fa459ea-ee8a-3ca4-894e-db77e160355e" 的UUID# 生成随机UUIDuuid.uuid4() # 返回一个随机的UUID类似 "16fd2706-8baf-433b-82eb-8c7fada847da"# 使用SHA-1散列值生成UUIDuuid.uuid5(uuid.NAMESPACE_DNS, 'python.org') # 返回一个类似 "886313e1-3b8a-5372-9b90-0c9aee199e5d" 的UUID# 从一个字符串生成UUIDx = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')# 将其转换为标准形式str(x)# 获取UUID的原始16字节表示x.bytes # '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'# 从16字节字符串生成UUIDuuid.UUID(bytes=x.bytes)
通过上述方法,可以轻松生成和验证UUID的各个版本,满足不同场景的需求。
转载地址:http://wvmhz.baihongyu.com/