uuid1:IEEE 802 MAC地址
import uuid
'''
UUID1值使用主机的MAC地址计算。uuid模块使用getnode函数来获取当前系统的MAC值
'''
print(uuid.getnode()) # 70561824630575
# 如果一个系统有多个网卡,那么相应地便会有多个MAC地址,并且可能返回其中任意一个值
# 要为一个主机(由其MAC地址标识)生成一个UUID,需要使用uuid1函数。节点标识符参数是可选的。如果没有设置这个域,那么便会使用getnode返回的值
u = uuid.uuid1()
print(u)
print(type(u))
print(f"bytes:{u.bytes}")
print(f"hex:{u.hex}")
print(f"int:{u.int}")
r'''
3e5fc450-51f7-11e9-ad5d-402cf47de72f
<class 'uuid.UUID'>
bytes:b'>_\xc4PQ\xf7\x11\xe9\xad]@,\xf4}\xe7/'
hex:3e5fc45051f711e9ad5d402cf47de72f
int:82909385656127884677084089467799463727
'''
UUID 3和5:基于名字的值
import uuid
'''
有些情况下可能需要根据名字创建UUID值,而不是根据随机值或基于时间的值来创建。
UUID 3和5规范使用密码散列值(分别使用MD5和SHA-1),将特定于命名空间的种子值与名字相结合。
'''
hostnames = ["www.baidu.com", "www.google.com"]
for name in hostnames:
print(name)
print(" md5 : ", uuid.uuid3(uuid.NAMESPACE_DNS, name))
print(" sha1: ", uuid.uuid5(uuid.NAMESPACE_DNS, name))
print()
'''
www.baidu.com
md5 : 21aa3105-dfd8-3bca-ab6b-64ea70ff0847
sha1: 41b0ac12-a668-57f8-9471-4bc149b12778
www.google.com
md5 : de87628d-5377-3ba7-b31b-cde1cc8d423f
sha1: 488416f4-fcaf-5027-8c63-0105cfa213ea
'''
uuid4:随机值
import uuid
'''
一般情况下我们使用uuid4
'''
for _ in range(3):
print(uuid.uuid4())
'''
03f6defd-db47-43fc-9a27-da8ffaeb55f6
d61a41e2-476e-42b0-b089-5e3b62a44956
1912cd31-2a53-4abc-8250-d27b4ac7da2f
'''
# 注意目前得到的都只是一个UUID对象,可以转化成字符串
u = uuid.uuid4()
print(u) # 9c0cf417-46bc-402a-bbab-f964f867976e
print(type(u)) # <class 'uuid.UUID'>
print(type(str(u))) # <class 'str'>