python之uuid通用唯一标识符模块

长安古道马迟迟,高柳乱蝉嘶。夕阳岛外,秋风原上,目断四天垂。
归云一去无踪迹,何处是前期?狎兴生疏,酒徒萧索,不似少年时。

一、UUID的介绍:

UUID: 通用唯一标识符 ( Universally Unique Identifier ), 对于所有的UUID它可以保证在空间和时间上的唯一性. 它是通过MAC地址, 时间戳, 命名空间, 随机数, 伪随机数来保证生成ID的唯一性, 有着固定的大小( 128 bit ). 它的唯一性和一致性特点使得可以无需注册过程就能够产生一个新的UUID. UUID可以被用作多种用途, 既可以用来短时间内标记一个对象, 也可以可靠的辨别网络中的持久性对象.
  为什么要使用UUID?
  很多应用场景需要一个id, 但是又不要求这个id 有具体的意义, 仅仅用来标识一个对象. 常见的例子有数据库表的id 字段. 另一个例子是前端的各种UI库, 因为它们通常需要动态创建各种UI元素, 这些元素需要唯一的id , 这时候就需要使用UUID了.

二、uuid模块的使用:

python的uuid模块提供UUID类和函数uuid1(), uuid3(), uuid4(), uuid5() 来生成1, 3, 4, 5各个版本的UUID ( 需要注意的是: python中没有uuid2()这个函数). 对uuid模块中最常用的几个函数总结如下:

  • uuid.uuid1(node, clock_seq) : 基于MAC地址,时间戳,随机数  
    基于MAC地址,时间戳,随机数来生成唯一的uuid,可以保证全球范围内的唯一性。但由于使用该方法生成的UUID中包含有主机的网络地址, 因此可能危及隐私。 该函数有两个参数, 如果 node 参数未指定, 系统将会自动调用 getnode() 函数来获取主机的硬件地址. 如果 clock_seq 参数未指定系统会使用一个随机产生的14位序列号来代替

  • uuid.uuid2()  
    算法与uuid1相同,不同的是把时间戳的前4位置换为POSIX的UID。不过需要注意的是python中没有基于DCE的算法,所以python的uuid模块中没有uuid2这个方法。

  • uuid.uuid3(namespace, name) : 基于名字的MD5散列值  
    通过计算一个命名空间和名字的md5散列值来给出一个uuid,所以可以保证命名空间中的不同名字具有不同的uuid,但是相同的名字就是相同的uuid了。namespace并不是一个自己手动指定的字符串或其他量,而是在uuid模块中本身给出的一些值。比如uuid.NAMESPACE_DNS,uuid.NAMESPACE_OID,uuid.NAMESPACE_OID这些值。这些值本身也是UUID对象,根据一定的规则计算得出。

  • uuid.uuid4() : 基于随机数  
    通过随机数来生成UUID. 使用的是伪随机数有一定的重复概率

  • uuid.uuid5(namespace, name) : 基于名字的SHA-1散列值  
    和uuid3基本相同,只不过采用的散列算法是sha1

三、uuid的简单使用:

import uuid

name = 'wangjifei'
namespace = uuid.NAMESPACE_OID

print(uuid.uuid1())
print(uuid.uuid3(namespace,name))
print(uuid.uuid4())
print(uuid.uuid5(namespace,name))

42a5d474-d276-11e8-be0c-001cc2340bf8
1c0451f9-4b46-381a-8039-43ecc91bc0c0
c5207330-6c9c-4285-bcca-163e24aaeac3
41e1be5c-b568-5e5d-8ce2-f4609fd3bec5

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 一、关于UUID UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写...
    形式主义_5adc阅读 2,860评论 1 1
  • 欢乐太大声的时候很容易吵醒痛苦,但是痛苦很大声的时候欢乐却像是睡死过去了一样。
    ilife_4f68阅读 394评论 0 0
  • 简介 Hybrid App(混合模式移动应用)是指介于web-app、native-app这两者之间的app,兼具...
    Carson_Zhu阅读 342评论 0 0
  • 在中国如果用一个词来概括幸福感和高大上,那这个词一定非"专有"莫属。 查了某百科的解释"专有"意为独占,是古代词语...
    人生如梦001阅读 173评论 0 1