Python uuid 学习总结
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 uuid 学习总结相关推荐
- Python 模块 UUID 学习使用
Python 模块 UUID 学习使用 一.UUID介绍 UUID: 通用唯一标识符 ( Universally Unique Identifier ), 对于所有的UUID它可以保证在空间和时间上的 ...
- python速成要多久2019-8-28_2019最全Python入门学习路线,不是我吹,绝对是最全
近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学 ...
- Python深度学习:基于TensorFlow
作者:吴茂贵,王冬,李涛,杨本法 出版社:机械工业出版社 品牌:机工出版 出版时间:2018-10-01 Python深度学习:基于TensorFlow
- Python深度学习:基于PyTorch [Deep Learning with Python and PyTorch]
作者:吴茂贵,郁明敏,杨本法,李涛,张粤磊 著 出版社:机械工业出版社 品牌:机工出版 出版时间:2019-11-01 Python深度学习:基于PyTorch [Deep Learning with ...
- Python - 输出格式 (学习小结)
Python - 输出格式 (学习小结) Bu.xing 利用现代手段,创建学习家园 关注他 1 人赞同了该文章 Python 输出格式 我们常说的输出格式分两种含义: # 一种是指数据在屏幕上的显 ...
- Python入门 Python自学路线 Python如何学习
本文介绍Python入门 Python自学路线 Python如何学习.先说点题外话吧:首先呢,我刚开始接触编程的时候,学的是C,那时候Python还没有这么火,后来学了C++,PHP,Java,前端. ...
- python windows编程_在Windows下配置Python编程学习环境
一.需求: 之前是在Linux环境下进行Python的学习,每次开虚拟机觉得有点麻烦,希望可以直接在Windows的dos命令行下进行Python编程学习. 二.安装软件 直接从官网下载这两个软件安装 ...
- python神经结构二层_《python深度学习》笔记---8.3、神经风格迁移
<python深度学习>笔记---8.3.神经风格迁移 一.总结 一句话总结: 神经风格迁移是指将参考图像的风格应用于目标图像,同时保留目标图像的内容. 1."神经风格迁移是指将 ...
- Python+OpenCV学习(17)---摄像机标定
Python+OpenCV学习(17)---摄像机标定 原文:http://blog.csdn.net/firemicrocosm/article/details/48594897 利用python学 ...
最新文章
- 动手学深度学习打卡之二。
- Expect 在网络管理中发挥着重要作用
- Android中怎样使用Navicat可视化查看sqllite的数据库(查看db文件)
- Linux 解压后的启动流程分析
- 简单的ViewPager了解Scroller类
- 1008 数组元素循环右移问题 (20分)
- 使用EFI引导从硬盘(U盘)安装Win7的图文教程
- 如何在使用ASPMVC4的分部视图中获取数据展示
- C++开发工程师可以分为几层?
- angularJS 双向数据绑定、作用域、表达式、
- 百度云网盘高速通道加速破解版 去广告纯净版干净云
- java5 64_java8 64位(官方免费版下载2020)
- 数据科学分布——泊松分布
- 对话混沌创新商学院6期校友:“朋克养生”背后的产业密码
- 汇正财经推荐股票靠谱吗?说说自己的经历
- 计算机控制室防火危险级为,8.2 空气调节 - 【已作废】火力发电厂与变电站设计防火规范 GB50229-2006 - 消防规范大全 - 消防资源网!...
- python脱离pc自动化_Android手机脱离电脑直接运行UIAutomator2
- 太赞了!Github上都没有的“网约车”项目!!!
- shell编程实例练习
- 英语流利说l4u1p2_L4-U1-P2-1Listening:ATriptoYosemitePark1 英语流利说 懂你英语
热门文章
- “单细胞”前瞻 |新型微滴反应筛选技术ATAC-seq数据分析新篇章
- python 表格查询_python单表查询
- 1.9 编程基础之顺序查找 01 查找特定的值
- nginx配置http自动跳转https方案
- python字符串处理函数汇总_python字符串函数总结
- canvas笔记-canvas加载图片及放缩及加水印(两canvas同时使用)
- 前端笔记-thymeleaf获取及回显select数据(combox)
- Qt工作笔记-使用SQL中的LIMIT进行数据分页
- 软考系统架构师笔记-最后知识点总结(四)
- Qt/C++工作笔记-vector与QVector的拷贝复制(区别与联系)