Python3之uuid模块
一. 简介
UUID是128位的全局唯一标识符,通常由32字节的字母串表示。它可以保证时间和空间的唯一性,也称为GUID。
全称为:UUID--Universally Unique IDentifier 在python 中叫做UUID,在C#中称为 GUID--Globally Unique IDentifier.
它通过MAC地址,时间戳,命名空间,随机数,伪随机数来保证生成ID的唯一性。
UUID主要有五个算法,也就是五种方法来实现。
(1). uuid1()---基于时间戳
由MAC地址,当前时间戳,随机数字生成。可以保证全球范围内的唯一性。但是由于MAC地址的使用同时带来了安全问题,
局域网中可以使用IP来代替MAC。
(2). uuid2()---基于分布式计算环境DCE(python中没有这个函数)
算法和uuid1相同,不同的是把时间戳的前4位换位POSIX的UID,实际中很少用到该方法。
(3). uuid3()---基于名字和MD5散列值
通过计算名字和命名空间的MD5散列值得到,保证了同一命名空间中不同名字的唯一性,和不同命名空间的唯一性,
但同一命名空间的名字生成相同的uuid。
(4). uuid4()---基于随机数
由伪随机数得到,有一定的重复概率,该概率可以计算出来。
(5). uuid5()---基于名字的SHA-1散列值
算法和uuid3()相同,不同的是使用Secure Hash Algorithm 1 算法。
使用经验:
- Python中没有基于DCE的,所以uuid2可以忽略
- uuid4存在概率性重复,由无映射性,最好不用
- 如果在global的分布式计算环境下,最好用uuid1
- 若有名字的唯一性要求,最好使用uuid3或uuid5
二. 使用
import uuid # uuid1()
>>> print(uuid.uuid1())
2cf0fa7e-48d9-11e6-93fb-c03fd53413ef
# uuid3()
>>> print(uuid.uuid3(uuid.NAMESPACE_DNS, 'test'))
45a113ac-c7f2-30b0-90a5-a399ab912716
# uuid4()
>>> print(uuid.uuid4())
08bffbb6-05e1-41c1-8989-6aa07a4a5e5d
# uuid5()
>>> print(uuid.uuid5(uuid.NAMESPACE_DNS, 'test'))
4be0643f-1d98-573b-97cd-ca98a65347dd
Python3之uuid模块的更多相关文章
- python基础系列教程——Python3.x标准模块库目录
python基础系列教程——Python3.x标准模块库目录 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata ...
- 每天一个小程序—第0001题(uuid模块)
第 0001 题: 做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)? 一开始以为是 ...
- Python内置模块之time、random、hashlib、OS、sys、UUID模块
Python常用模块 1.time模块 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的时间字符串: (1)时间戳(timestamp) :通常来说,时间 ...
- Python标准库 -- UUID模块(生成唯一标识)
UUID是什么: UUID: 通用唯一标识符 ( Universally Unique Identifier ),对于所有的UUID它可以保证在空间和时间上的唯一性,也称为GUID,全称为: UUID ...
- Python3之turtle模块的使用
Python3之turtle模块的使用 直接扣代码就行: import turtle as t t.pensize(4) t.hideturtle() t.colormode(255) t.c ...
- Python3:Requests模块的异常值处理
Python3:Requests模块的异常值处理 用Python的requests模块进行爬虫时,一个简单高效的模块就是requests模块,利用get()或者post()函数,发送请求. 但是在真正 ...
- Python3中正则模块re.compile、re.match及re.search函数用法详解
Python3中正则模块re.compile.re.match及re.search函数用法 re模块 re.compile.re.match. re.search 正则匹配的时候,第一个字符是 r,表 ...
- Python3安装Celery模块后执行Celery命令报错
1 Python3安装Celery模块后执行Celery命令报错 pip3 install celery # 安装正常,但是执行celery 命令的时候提示没有_ssl模块什么的 手动在Python解 ...
- Python3之configparser模块
1. 简介 configparser用于配置文件解析,可以解析特定格式的配置文件,多数此类配置文件名格式为XXX.ini,例如mysql的配置文件.在python3.X中 模块名为configpars ...
随机推荐
- Linux批量“解压”JAR文件
当你需要”解压“很多jar文件时,可以通过很多方式进行,比如下面这种 1,列出每一个jar文件名,逐个展开 for i in $(ls *sour*.jar);do jar xvf $i;done
- Spring AOP 中pointcut expression表达式解析及配置
Pointcut是指那些方法需要被执行”AOP”,是由”Pointcut Expression”来描述的. Pointcut可以有下列方式来定义或者通过&& || 和!的方式进行组合. ...
- leetcode421
public class Solution { public int FindMaximumXOR(int[] nums) { , mask = ; ; i >= ; i--) { mask = ...
- Cannot+use+T4+templates+inside+a+.NET+Core+project,NetCore2.0无法使用T4模板解决方法
Cannot+use+T4+templates+inside+a+.NET+Core+project,NetCore2.0无法使用T4模板解决方法 请见:https://csharp.wekeepco ...
- C# 文件打印
Process pr = new Process(); pr.StartInfo.FileName = “C:\test.xls”; ...
- java基础之对象当做参数传进方法的堆栈内存解析
值类型当做参数传进方法: 引用类型对象当做参数传进方法: String字符串当做参数传进方法:
- 如何上传网站程序(文件浏览器上传网页、FileZilla上传网站程序)
问题场景: 网页制作完成后,程序需上传至虚拟主机. 注意事项: Windows系统的主机请将全部网页文件直接上传到FTP根目录,即 / . Linux系统的主机请将全部网页文件直接上传到 /htdoc ...
- SQL中对数据截取替换
REPLACE(要修改字段名,‘被替换的特定字符’,‘替换的字符’) 表结构和插入数据 CREATE DATABASE TEST GO USE TEST GO CREATE TABLE TestTab ...
- 476. Number Complement 二进制中的相反对应数
[抄题]: Given a positive integer, output its complement number. The complement strategy is to flip the ...
- 616. Add Bold Tag in String加粗字符串
[抄题]: Given a string s and a list of strings dict, you need to add a closed pair of bold tag <b&g ...