uuid

2.5版本中的新功能。

该模块提供不可变的UUID对象(UUID类)和功能uuid1()uuid3()uuid4()uuid5()如在指定生成版本1,3,4和5点的UUID RFC 4122

如果你想要的只是一个唯一的ID,你应该打电话uuid1()uuid4()。请注意,这uuid1()可能会危害隐私,因为它会创建一个包含计算机网络地址的UUID。uuid4()创建一个随机的UUID。

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

从32个十六进制数字的字符串中创建一个UUID,一个16字节的字符串作为字节参数,一个16字节的字符串,以little-endian顺序作为bytes_le参数,一个由6个整数组成的元组(32位time_low,16- 作为字段参数,或者作为int参数的单个128位整数,作为字段参数的位时间_mid_,16位time_hi_version,8位clock_seq_hi_variant,8位clock_seq_low,48位节点)。当给出一串十六进制数字时,大括号,连字符和URN前缀都是可选的。例如,这些表达式都产生相同的UUID:

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

正好一个十六进制字节bytes_le字段,或INT必须给予。该版本的参数是可选的; 如果给定的,所得到的UUID将具有其变体和版本号根据RFC 4122设置,从而覆盖在给定的比特十六进制字节bytes_le字段,或INT

UUID 实例具有这些只读属性:

UUID.bytes

UUID作为一个16字节的字符串(包含以big-endian字节顺序的六个整数字段)。

UUID.bytes_le

UUID作为16字节的字符串(以little-endian字节顺序包含time_lowtime_midtime_hi_version)。

UUID.fields

UUID的六个整数字段的元组,它们也可用作六个单独的属性和两个派生属性:

领域

含义

time_low

UUID的前32位

time_mid

UUID的接下来的16位

time_hi_version

UUID的接下来的16位

clock_seq_hi_variant

UUID的接下来的8位

clock_seq_low

UUID的接下来的8位

节点

UUID的最后48位

时间

60位时间戳

clock_seq

14位序列号

UUID.hex

UUID作为32个字符的十六进制字符串。

UUID.int

UUID是一个128位整数。

UUID.urn

UUID作为RFC4122中规定的URN。

UUID.variant

UUID变体,它确定UUID的内部布局。这将是一个常量RESERVED_NCSRFC_4122RESERVED_MICROSOFT,或RESERVED_FUTURE

UUID.version

UUID版本号(1到5,仅在变体时才有意义RFC_4122)。

uuid模块定义了以下功能:

uuid.getnode()

获取硬件地址为48位正整数。这是第一次运行,它可能会启动一个单独的程序,可能会很慢。如果所有尝试获取硬件地址都失败,我们选择一个随机的48位数字,其第8位设置为1,如RFC 4122中推荐的那样。“硬件地址”表示网络接口的MAC地址,以及具有多个网络接口可以返回其中任何一个的MAC地址。

uuid.uuid1([node[, clock_seq]])

从主机ID,序列号和当前时间生成一个UUID。如果没有给出节点getnode()则用于获取硬件地址。如果给出clock_seq,它将用作序列号; 否则选择一个随机的14位序列号。

uuid.uuid3(namespace, name)

根据名称空间标识(这是一个UUID)和一个名称(它是一个字符串)的MD5散列生成一个UUID。

uuid.uuid4()

生成一个随机的UUID。

uuid.uuid5(namespace, name)

根据名称空间标识(这是一个UUID)和名称(它是一个字符串)的SHA-1散列生成一个UUID。

uuid模块定义了以下用于uuid3()或的名称空间标识符uuid5()

uuid.NAMESPACE_DNS

当指定此名称空间时,名称字符串是完全限定的域名。

uuid.NAMESPACE_URL

当这个名字空间被指定时,名字字符串就是一个URL。

uuid.NAMESPACE_OID

当这个名字空间被指定时,名字字符串就是一个ISO OID。

uuid.NAMESPACE_X500

当指定此名称空间时,名称字符串是DER中的X.500 DN或文本输出格式。

uuid模块为该variant属性的可能值定义了以下常量:

uuid.RESERVED_NCS

保留用于NCS兼容性。

uuid.RFC_4122

指定RFC 4122中给出的UUID布局。

uuid.RESERVED_MICROSOFT

保留用于Microsoft兼容性。

uuid.RESERVED_FUTURE

留作未来定义。

1.例子

以下是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')

扫码关注云+社区

领取腾讯云代金券