uuid模块在Python 2.5以后引入,接口包括:不可变对象UUID(UUID类)和函数uuid1()、uuid3()、uuid4()和uuid5(),后面的四个函数用于生成 RFC 4122 规范中指定的第1、3、4、5版UUID。使用uuid1()或uuid4()可以获得一个唯一的ID,uuid1()包含了主机的网络名称,uuid4()不涉及网络主机名,仅生成一个随机UUID,因此从隐私保护角度uuid4()更加安全。

class uuid.UUID([hex[, bytes[, bytes_le[, fields[, int[, version]]]]]])

  该类用于从参数给定的内容中实例化UUID对象(hex, bytes, bytes_le, fields, int 必须且只能指定一个):

  hex:指定32个字符以创建UUID对象,当指定一个32个字符构成的字符串来创建一个UUID对象时,花括号、连字符和URN前缀等都是可选的;

  bytes:指定一个大端字节序的总长16字节的字节串来创建UUID对象;

  bytes_le:指定一个小端字节序的总长16字节的字节串来创建UUID对象;

  fields:指定6个整数域,共计128位来创建UUID(其中,32位作为time_low段,16位作为time_mid段,16位作为time_hi_version段,8位作为clock_seq_hi_variant段,8位作为clock_seq_low段,48位作为node段);

  int:直接指定一个长度为128个二进制位的整数用于创建UUID对象;

  version:(可选)指定UUID的版本,从1到5,一旦指定了该参数,生成的UUID将具有自己的变体(variant)和版本数,具体请参考RFC 4122,

例.

下面的各种方法创建相同的UUID对象,

u = UUID('{12345678-1234-5678-1234-567812345678}')
u = UUID(hex = '12345678123456781234567812345678')
u = UUID('urn:uuid:12345678-1234-5678-1234-567812345678')
u = UUID(bytes='\x12\x34\x56\x78'*4)
u = UUID(bytes_le='\x78\x56\x34\x12\x34\x12\x78\x56' +
'\x12\x34\x56\x78\x12\x34\x56\x78')
u = UUID(fields=(0x12345678, 0x1234, 0x5678, 0x12, 0x34, 0x567812345678))
u = UUID(int=0x12345678123456781234567812345678)

UUID对象含有以下只读属性

UUID.bytes

  以16个字节构成的字节串形式表示UUID,包含6个大端字节序的整数域;

>>> u.bytes
'\x124Vx\x124Vx\x124Vx\x124Vx'

  

UUID.bytes_le

  以16个字节构成的字节串形式表示UUID,包含6个小端字节序的整数域;

>>> u.bytes_le
'xV4\x124\x12xV\x124Vx\x124Vx'

  

 UUID.fields 
  以元组形式存放的UUID的6个整数域,该元组中的6个元素分别可以通过6个属性查看,还额外导出了两个属性(下面的每个域的名称也是UUID对象的一个属性):
含义
time_low UUID的初始32位
time_mid 接前一域的16位
time_hi_version 接前一域的16位
clock_seq_hi_variant 接前一域的8位
clock_seq_low 接前一域的8位
node UUID的最后48位
time UUID的总长60位的时间戳
clock_seq 14位的序列号
>>> u.fields
(305419896L, 4660L, 22136L, 18L, 52L, 95073701484152L)
 
 UUID.hex 
  以32个字符表示的UUID
>>> u.hex
'12345678123456781234567812345678'
  
 UUID.int 
  以一个长度为128个二进制位的整数表示的UUID;
>>> u.int
24197857161011715162171839636988778104L
  
 UUID.urn 
  以 RFC 4122 中指定的URN形式表示的UUID;
>>> u.urn
'urn:uuid:12345678-1234-5678-1234-567812345678'
  
 UUID.variant 
  UUID变体(variant),决定UUID内部的布局,已有的值为 RESERVED_NCSRFC_4122RESERVED_MICROSOFT 或 RESERVED_FUTURE
>>> u.variant
'reserved for NCS compatibility'
  
 UUID.version 
  UUID版本,只有当变体为 RFC_4122 时才有效。
>>> u.version
>>>

  这里由于u.variant == 'reserved for NCS compatibility',所以此处u.version为空。

  
uuid模块还定义了如下函数
 
 uuid.getnode() 
  获取硬件的地址并以48位二进制长度的正整数形式返回,这里所说的硬件地址是指网络接口的MAC地址,如果一个机器有多个网络接口,可能返回其中的任一个。如果获取失败,将按照RFC 4122的规定将随机返回的48位二进制整数的第8位设置成1。
>>> uuid.getnode()
152667293855L
  
 uuid.uuid1([node[, clock_seq]]) 
  利用主机ID、序列号和当前时间生成一个UUID,如果参数 node 没有给定,会调用 getnode() 来获取硬件地址。如果参数中指定了 clock_seq ,使用参数中给定的时钟序列作为序列号,否则使用一个随机的14位长的序列号。
>>> uuid.uuid1()
UUID('a89e9d00-a710-11e4-a84a-00238bae089f')
  
 uuid.uuid3(namespace, name) 
  基于命名空间标识符(实质上是一个UUID)和一个名称(实质上是一个字符串)的MD5哈希值生成UUID。
  
 uuid.uuid4() 
  生成一个随机的UUID
>>> uuid4()
UUID('b9f9fb88-49f3-4cea-9885-19e57c3572c6')
  
 uuid.uuid5(namespace, name) 
  基于命名空间标识符(实质上是一个UUID)和一个名称(实质上是一个字符串)的SHA-1哈希值生成UUID
  
关于uuid3()和uuid5()中提到的命名空间标识符,uuid模块定义了如下的备选项
 uuid.NAMESPACE_DNS 
  当指定该命名空间时,参数 name 是一个完全限定的(fully-qualified)域名
  
 uuid.NAMESPACE_URL 
  当指定该命名空间时,参数 name 是一个URL
  
 uuid.NAMESPACE_OID 
  当指定该命名空间时,参数 name 是一个ISO OID
  
 uuid.NAMESPACE_X500 
  当指定该命名空间时,参数 name 是一个DER格式或文本格式的X.500 DN。
  
关于属性variant,uuid模块定义了如下的常量
  
 uuid.RESERVED_NCS 
  该常量为兼容NCS而保留;
  
 uuid.RFC_4122 
  按照 RFC 4122 的规定来确定UUID的布局;
  
 uuid.RESERVED_MICROSOFT 
  该常量位兼容微软而保留
   
 uuid.RESERVED_FUTURE 
  该常量为未来可能的定义保留
可以在Python中查看这些常量:
>>> uuid.RESERVED_NCS
'reserved for NCS compatibility'
>>> uuid.RFC_4122
'specified in RFC 4122'
>>> uuid.RESERVED_MICROSOFT
'reserved for Microsoft compatibility'
>>> uuid.RESERVED_FUTURE
'reserved for future definition'

Python——uuid的更多相关文章

  1. python uuid、hex study

    由 import uuid product[“SourceInfo"]["ProductID"] = uuid.uuid4().hex 引起的uuid 一.概述 uuid ...

  2. python uuid 介绍

    1. 背景知识: UUID: 通用唯一标识符 ( Universally Unique Identifier ), 对于所有的UUID它可以保证在空间和时间上的唯一性. 它是通过MAC地址, 时间戳, ...

  3. python UUID

    UUID介绍 UUID是128位的全局唯一标识符,通常由32字节的字符串表示.它可以保证时间和空间的唯一性,也称为GUID,全称为:UUID ―― Universally Unique IDentif ...

  4. Python uuid库中 几个uuid的区别

    在用到uuid库的时候,发现uuid有很多个,比较好奇,就查了一下他们的区别 uuid1()——基于时间戳 uuid2()——基于分布式计算环境DCE(Python中没有这个函数) uuid3()—— ...

  5. python中uuid来生成机器唯一标识

    摘要: 我们可以使用uuid1的后16位来标识一个机器.  # use machine specific uuid, last 16 char will be the same if machine ...

  6. 11 Python Libraries You Might Not Know

    11 Python Libraries You Might Not Know by Greg | January 20, 2015 There are tons of Python packages ...

  7. Django Model field reference

    ===================== Model field reference ===================== .. module:: django.db.models.field ...

  8. django 模型类的常见字段约束,以及filter 过滤和查询

    null 不设置时默认设置为False.设置为True时,数据库表字段中将存入NULL的记录. null和blank组合使用,null=True,blank=True,表示该字段可以为空 blank ...

  9. 计算机网络(6): http cookie

    Cookie作用: 1)帮助管理用户会话信息(用户需要记录的信息:登陆状态等) 2)跟踪浏览器的行为 3)用户自定义设置 实现方式: 当用户浏览带有Cookie的网站时,网站自动为其生成一个唯一的标志 ...

随机推荐

  1. (转)Lua学习笔记1:Windows7下使用VS2015搭建Lua开发环境

    Lua学习笔记1:Windows7下使用VS2015搭建Lua开发环境(一)注意:工程必须添加两个宏:“配置属性”/“C或C++”/“预处理器”/“预处理器定义”,添加两个宏:_CRT_SECURE_ ...

  2. c++ primer读书笔记之c++11(一)

    1 新的关键词nullptr c++11引入新的关键词nullptr,用于表示空指针,用于替换之前c提供的NULL(最初NULL是定义在stdlib中的宏定义,通常是0). 2 新的别名定义机制 al ...

  3. Logstash使用jdbc同步MySQL中的数据

    [--26T20::,][WARN ][logstash.inputs.jdbc ] Exception when executing JDBC query {:exception=>#< ...

  4. 前端js上传文件插件

    1. plupload文件上传 2.ajaxfileupload文件上传

  5. 如何在 Django 中保证并发的数据一致性

    1. 关于锁 1.1 乐观锁 乐观锁的出发点是,同一条数据很少会因为并发修改而产生冲突,适用于读多写少的场景,用以提高吞吐量. 实现方式,读取一个字段,执行处理逻辑,当需要更新数据时,再次检查该字段是 ...

  6. 【Bayesian】贝叶斯决策方法(Bayesian Decision Method)

    已知某条件概率,如何得到两个事件交换后的概率,也就是在已知P(A|B)的情况下如何求得P(B|A).这里先解释什么是条件概率: 表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条 ...

  7. CSS标签类型和样式表继承与优先级

    标签类型 块级标签 什么是块级标签:在html中<div>. <p>.h1~h6.<form>.<ul> 和 <li>就是块级元素 块级标签 ...

  8. SD卡镜像烧写--树莓派为例

    SD烧写镜像都要先擦除SD卡内容,然后用image烧写工具烧写镜像. SD卡标准官网:www.sdcard.org,提供标准的擦除工具sdformatter. windows下镜像烧写工具可选用Win ...

  9. Java编程的逻辑 (41) - 剖析HashSet

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

  10. mysql lower_case_table_names 区分表名大小写设置

    Command-Line Format --lower-case-table-names[=#] System Variable Name lower_case_table_names Variabl ...