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. 每日英语:Three Shows That Changed The Way Networks Think About Viewership

    As we continue examining this season’s DVR success stories in The Blacklist and Sleepy Hollow it mak ...

  2. DIOCP开源项目-DIOCP3的重生和稳定版本发布

    DIOCP3的重生 从开始写DIOCP到现在已经有一年多的时间了,最近两个月以来一直有个想法做个 30 * 24 稳定的企业服务端架构,让程序员专注于逻辑实现就好.虽然DIOCP到现在通讯层已经很稳定 ...

  3. 【转&参考】MySQL利用frm和ibd文件进行数据恢复

    MySQL利用frm和idb文件进行数据恢复 源MySQL现状: 版本:5.6.* 存储引擎:innodb存储引擎 要恢复数据库:skill 重点要恢复表:slot_value 已有的文件: 备份了所 ...

  4. WebSphere ILOG JRules 规则引擎运行模式简介

    WebSphere ILOG JRules 规则引擎运行模式简介 引言 作为 JRules 的核心组件,规则引擎决定了在规则集的执行过程中,哪些业务规则会被执行,以及以何种顺序执行.理解并合理选择规则 ...

  5. 微服务之springCloud和docker-Eureka(一)

    前言    本文记录怎么搭建服务注册中心eureka,然后打包成docker镜像,用docker swarm部署eureka集群 1.环境 环境 版本及说明 参考地址 docker v1.13.1,D ...

  6. pthon 批量压缩当前目录,子目录下图片

    需求 经常可能有需要压缩图片的需求. 但是一些批量处理图片的软件又仅仅支持压缩一个目录下的图片, 所以写下了这个图片处理程序: 需要安装: python 2.x Image模块 特点: 压缩当前目录, ...

  7. php使用正则函数使用详解

    1. int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, in ...

  8. [strace]跟踪进程的系统调用

    转自:https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.html 简介 strace常用来跟踪进程执行时的系统调用和所接收的信号 ...

  9. js 日期格式化函数

    直接上代码: // 日期格式化函数 // yyyy/MM/dd hh:mm:ss SSS ⇒ "2017/05/16 09:24:20 850" //"yyyy/M/d ...

  10. 用图片做div背景的列表布局 CSS代码

    思路: 1.因为是竖型列表,所以外层用 相对定位,这样 在不会重叠在一起 relative 2.里面用绝对位置 absolute,覆盖在图片上面 3.这里有个小技巧,我里面有个特效,文字竖立,并向右旋 ...