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连接mysql调用存储过程示例
Mar 05 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
Aug 22 Python
python 实现批量xls文件转csv文件的方法
Oct 23 Python
Python实现的ftp服务器功能详解【附源码下载】
Jun 26 Python
python图片二值化提高识别率代码实例
Aug 24 Python
python 三元运算符使用解析
Sep 16 Python
使用python切片实现二维数组复制示例
Nov 26 Python
python统计文章中单词出现次数实例
Feb 27 Python
Python文本文件的合并操作方法代码实例
Mar 31 Python
PyQT5 实现快捷键复制表格数据的方法示例
Jun 19 Python
python3的pip路径在哪
Jun 23 Python
python not运算符的实例用法
Jun 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中Cookie与Session的异同
2016/02/19 PHP
PHP-FPM实现性能优化
2016/03/31 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
js监听键盘事件示例代码
2013/07/26 Javascript
在javascript中实现函数数组的方法
2013/12/25 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
JavaScript函数模式详解
2014/11/07 Javascript
jQuery实现隔行背景色变色
2014/11/24 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
详解前后端分离之VueJS前端
2017/05/24 Javascript
js的对象与函数详解
2019/01/21 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
Python selenium 三种等待方式详解(必会)
2016/09/15 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
python机器学习实战之树回归详解
2017/12/20 Python
50行Python代码实现人脸检测功能
2018/01/23 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
python实现朴素贝叶斯算法
2018/11/19 Python
python SVM 线性分类模型的实现
2019/07/19 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
2019/08/01 Python
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
使用NumPy读取MNIST数据的实现代码示例
2019/11/20 Python
python如何求数组连续最大和的示例代码
2020/02/04 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
解析浏览器的一些“滚动”行为鉴赏
2019/09/16 HTML / CSS
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
工商管理专业应届生求职信
2013/11/04 职场文书
医学生职业规划范文
2014/01/05 职场文书
开学典礼主持词
2014/03/19 职场文书
优秀教研组申报材料
2014/12/26 职场文书
2019年中学生的思想品德评语集锦
2019/12/19 职场文书
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers