开发者学堂课程【Python 入门 2020年版:Uuid 模块】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10361
Uuid 模块
uuid 模块的应用
UUID 是 128 位的全局唯一标识符,通常由 32 字节的字母串表示,它可以保证时间和空间的唯一性,也称为 GUID- 通过 MAC 地址时间戳。命名空间,随机数、伪随机数来保证生产的 ID 的唯一性。
随机生成字符串,可以当成 token 使用,当成用户账号使用,当成订单号使用。
Import uuid
1.print(uuid.uuid())
生成结果为
91817e5c-56a8-11ea-005056c00008
的 32 个字母。每一个字符有 16 个选择,这也说明有 16**32 个选择。
这时会出来非常大的数字。注意,不需要保证全球唯一,只需要保证自己系统内的唯一。也就是全局唯一。
2.方法:uuid.uuid1()
(1).作用:基于 MAC 地址,时间戳,随机数来生成唯一的 uuid,可以保证全球范围内的唯一性。
(2).注:规格比较麻烦,虽然唯一性很强,但是效率不高,花的时间比较长
3.方法:uuiduuid2()
作用:算法与 uuid1 相同,不同的是把时间戳的前 4 位置换为 POSIX 的 UID。
不过需要注意的是 python 中没有基于 DCE 的算法,所以 python 的 uuid 模块中没有 uuid2 这个方法。
4.方法:uuid.uuid3(namespace.name)
是需要 namespace 与 name 两个算法
(1).作用
①.通过计算一个命名空间和名字的 md5 散列值来给出一 uuid,之所以可以保证命名空间中的不同名字具有不同的 uuid,但是相同的名字就是相同的 uuid 了。
②.Namespace 并不是一个自己手动指定的字符串或其他量,而是在 uuid 模块中本身给出的一些值。
比如 uuid.NAMESPACEDNS,uuid.NAMESPACEOID
这些值。这些值本身也是 UUID 对象,根据一定的规则计算得出。
(2).举例说明
①.print(uuid.uuid3(uuid.NAMESPACE_DNS,’zhangsan’))
运行出来的结果为 d51a47a6-3157-94d3-70ecb9fda86e
,结果是不变的。生成固定的 uuid。
②.注意,uuid3 以及 uuid5 是使用传入的字符串根据指定的算法算出来的。是固定的。
5.方法:uuid.uuid4()
(1).作用
通过伪随机数得到 uuid,是有一定概率重复的
uuiduuid5(namespace,name)
和 uuid3
基本相同,只不过采用的散列算法是 sha1
(2).举例
①.print(uuid.uuid4())
的结果是变化的,uuid4 是使用的最多的,是随机生成的。
②.注:一般用 uuid,uuid4() 是够用的。
③.比如说去网站的时候,登入注册的时候会有写邮箱,紧跟着服务器跟着邮箱发邮件,发邮件的会给链接,同时让你激活,如果一天注册好多个用户,打比方一天注册一百个,那怎样标示一百多个用户?
这时可以用 uuuid 标识,就可以知道,是全局唯一的标识符,是一串数字,这个数字保证在整个系统里只有一个不重复。
6.方法:uuid.uuid5()
作用:
和 uuid3 基本相同,只不过采用的散列算法是 sha1