Python通用唯一标识符uuid模块使用案例


Posted in Python onSeptember 10, 2020

1. 背景知识:

UUID: 通用唯一标识符 ( Universally Unique Identifier ), 对于所有的UUID它可以保证在空间和时间上的唯一性. 它是通过MAC地址, 时间戳, 命名空间, 随机数, 伪随机数来保证生成ID的唯一性, 有着固定的大小( 128 bit ). 它的唯一性和一致性特点使得可以无需注册过程就能够产生一个新的UUID. UUID可以被用作多种用途, 既可以用来短时间内标记一个对象, 也可以可靠的辨别网络中的持久性对象.

为什么要使用UUID?

很多应用场景需要一个id, 但是又不要求这个id 有具体的意义, 仅仅用来标识一个对象. 常见的例子有数据库表的id 字段. 另一个例子是前端的各种UI库, 因为它们通常需要动态创建各种UI元素, 这些元素需要唯一的id , 这时候就需要使用UUID了.

2. Python的uuid模块

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

1. uuid.uuid1([node[, clock_seq]]) : 基于时间戳

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

2. uuid.uuid3(namespace, name) : 基于名字的MD5散列值

通过计算命名空间和名字的MD5散列值来生成UUID, 可以保证同一命名空间中不同名字的唯一性和不同命名空间的唯一性, 但同一命名空间的同一名字生成的UUID相同.

4. uuid.uuid4() : 基于随机数

通过随机数来生成UUID. 使用的是伪随机数有一定的重复概率.

5. uuid.uuid5(namespace, name) : 基于名字的SHA-1散列值

通过计算命名空间和名字的SHA-1散列值来生成UUID, 算法与 uuid.uuid3() 相同.

3. uuid模块的典型使用方法:

>>> import uuid

>>> # make a UUID based on the host ID and current time
>>> uuid.uuid1()
UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')

>>> # make a UUID using an MD5 hash of a namespace UUID and a name
>>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')
UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')

>>> # make a random UUID
>>> uuid.uuid4()
UUID('16fd2706-8baf-433b-82eb-8c7fada847da')

>>> # make a UUID using a SHA-1 hash of a namespace UUID and a name
>>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')
UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')

>>> # make a UUID from a string of hex digits (braces and hyphens ignored)
>>> x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')

>>> # convert a UUID to a string of hex digits in standard form
>>> str(x)
'00010203-0405-0607-0809-0a0b0c0d0e0f'

>>> # get the raw 16 bytes of the UUID
>>> x.bytes
'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'

>>> # make a UUID from a 16-byte string
>>> uuid.UUID(bytes=x.bytes)
UUID('00010203-0405-0607-0809-0a0b0c0d0e0f')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 调用DLL操作抄表机
Jan 12 Python
Python列表(list)、字典(dict)、字符串(string)基本操作小结
Nov 28 Python
Python脚本实现格式化css文件
Apr 08 Python
Django中几种重定向方法
Apr 28 Python
Windows下python2.7.8安装图文教程
May 26 Python
Python3.4编程实现简单抓取爬虫功能示例
Sep 14 Python
Python实现简单的文本相似度分析操作详解
Jun 16 Python
Django中的ajax请求
Oct 19 Python
Python3 安装PyQt5及exe打包图文教程
Jan 08 Python
Python学习笔记之变量、自定义函数用法示例
May 28 Python
Python使用python-docx读写word文档
Aug 26 Python
Python3爬虫关于代理池的维护详解
Jul 30 Python
Python编写单元测试代码实例
Sep 10 #Python
python super()函数的基本使用
Sep 10 #Python
Python如何实现机器人聊天
Sep 10 #Python
Python 必须了解的5种高级特征
Sep 10 #Python
matplotlib 多个图像共用一个colorbar的实现示例
Sep 10 #Python
利用python 读写csv文件
Sep 10 #Python
如何用Python 加密文件
Sep 10 #Python
You might like
在PHP中检查PHP文件是否有语法错误的方法
2009/12/23 PHP
php下删除一篇文章生成的多个静态页面
2010/08/08 PHP
php实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
php中Ctype函数用法详解
2014/12/09 PHP
Save a File Using a File Save Dialog Box
2007/06/18 Javascript
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
js复制到剪切板的实例方法
2013/06/28 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
2017/02/15 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
Node.js系列之发起get/post请求(2)
2019/08/30 Javascript
[09:33]2015国际邀请赛第四日TOP10
2015/08/08 DOTA
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
python中的hashlib和base64加密模块使用实例
2014/09/02 Python
详解Swift中属性的声明与作用
2016/06/30 Python
Python实现简单的语音识别系统
2017/12/13 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
2018/05/21 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
python实现单机五子棋
2020/08/28 Python
HTML5离线缓存Manifest是什么
2016/03/09 HTML / CSS
EVE LOM英国官网:全世界最好的洁面膏
2017/10/30 全球购物
美国波西米亚风格服装品牌:Show Me Your Mumu
2018/01/05 全球购物
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
信息专业大学生自我评价分享
2014/01/17 职场文书
银行办理业务介绍信
2014/01/18 职场文书
服装创业计划书范文
2014/02/05 职场文书
薪酬专员岗位职责
2014/02/18 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
医药公司采购员岗位职责
2014/09/12 职场文书
三好学生事迹材料
2014/12/24 职场文书
婚庆主持词大全
2015/06/30 职场文书