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调用新浪微博API项目实践
Jul 28 Python
Python格式化压缩后的JS文件的方法
Mar 05 Python
Python pickle模块用法实例分析
May 27 Python
Python实现周期性抓取网页内容的方法
Nov 04 Python
Python自定义线程池实现方法分析
Feb 07 Python
使用anaconda的pip安装第三方python包的操作步骤
Jun 11 Python
python实现在图片上画特定大小角度矩形框
Oct 24 Python
Python multiprocessing多进程原理与应用示例
Feb 28 Python
selenium+PhantomJS爬取豆瓣读书
Aug 26 Python
用Python实现校园通知更新提醒功能
Nov 23 Python
PyTorch中反卷积的用法详解
Dec 30 Python
python爬虫基础之urllib的使用
Dec 31 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的面试题集,附我的答案和分析(一)
2006/11/19 PHP
PHP如何得到当前页和上一页的地址?
2006/11/27 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
2014/06/20 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
javascript获得CheckBoxList选中的数量
2009/10/27 Javascript
jQuery的链式调用浅析
2010/12/03 Javascript
原生Ajax 和jQuery Ajax的区别示例分析
2014/12/17 Javascript
jQuery链使用指南
2015/01/20 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
bootstrap导航、选项卡实现代码
2016/12/28 Javascript
js实现弹窗暗层效果
2017/01/16 Javascript
React 高阶组件入门介绍
2018/01/11 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
2018/10/18 Javascript
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
Python深入学习之特殊方法与多范式
2014/08/31 Python
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
Linux下升级安装python3.8并配置pip及yum的教程
2020/01/02 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
Bobbi Brown芭比波朗美国官网:化妆师专业彩妆保养品品牌
2016/08/18 全球购物
英国在线电子和小工具商店:TecoBuy
2018/10/06 全球购物
本科生详细的自我评价
2013/09/19 职场文书
仓管岗位职责范本
2014/02/08 职场文书
挂牌仪式主持词
2014/03/20 职场文书
协议书样本
2014/04/23 职场文书
论文评语大全
2014/04/29 职场文书
幼儿园迎国庆65周年活动策划方案
2014/09/16 职场文书
2015年度酒店客房部工作总结
2015/05/25 职场文书
2019年销售部季度工作计划3篇
2019/10/09 职场文书