uuid– 根据 RFC 4122

UUID对象源代码: Lib / uuid.py


这个模块提供了不可变的UUID对象(UUID类)和功能uuid1(), uuid3(), uuid4(), uuid5()生成 RFC 4122 .

中指定的版本1,3,4和5 UUID如果你想要的只是一个唯一的ID,你应该调用uuid1()uuid4()。注意 uuid1()可能会破坏隐私,因为它会创建包含计算机网络地址的UUID。uuid4()创建一个随机的UUID.

根据底层平台的支持,uuid1()可能会或可能不会返回“安全”的UUID。安全UUID是使用同步方法生成的UUID,确保没有两个进程可以获取相同的UUID。UUID的所有实例都有is_safeattributewhich使用此枚举来中继有关UUID安全性的任何信息:

class uuid.SafeUUID

版本3.7.

safe

UUID是由平台以多处理安全的方式生成的.

unsafe

UUID不是以多处理安全的方式生成的.

unknown

平台没有提供有关UUID是否安全生成的信息.

class uuid.UUID (hex=None, bytes=None, bytes_le=None, fields=None, int=None, version=None, *, is_safe=SafeUUID.unknown)

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

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

必须给出hex, bytes, bytes_le, fieldsint中的一个.version参数是可选的;如果给定,生成的UUID将根据 RFC 4122 设置其变量和版本号,覆盖ingiven hex, bytes, bytes_le, fieldsint.

的比较UUID对象是通过比较它们的UUID.int属性来创建的。与非UUID对象的比较a TypeError.

str(uuid)12345678-1234-5678-1234-567812345678的形式返回一个字符串,其中32个十六进制数字表示UUID .

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

UUID.bytes

UUID为16字节字符串(包含大端字节顺序的六个整数字段).

UUID.bytes_le

UUID为16字节字符串(带time_low, time_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位
node UUID的最后48位
time 60位时间戳
clock_seq 14位序列号
UUID.hex

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

UUID.int

UUID为128位整数.

UUID.urn

UUID为指定的URN在 RFC 4122 .

UUID.variant

UUID变体,用于确定UUID的内部布局。这将是常量RESERVED_NCS, RFC_4122,RESERVED_MICROSOFTRESERVED_FUTURE.

UUID.version

UUID版本号(1到5,仅在变量为RFC_4122时才有意义).

UUID.is_safe

的枚举SafeUUID表示平台是否以多处理安全方式生成UUID .

版本3.7.

uuid模块定义了以下功能:

uuid.getnode

获取硬件地址为48位正整数。这是第一次,它可能会启动一个单独的程序,这可能会很慢。如果allattempts获取硬件地址失败,我们选择一个随机的48位数,并将多播位(第一个八位位组的最低有效位)设置为1,如RFC 4122 。“硬件地址”表示网络接口的MAC地址。在具有多个网络接口的机器上,通用管理的MAC地址(即第一个八位字节的第二个重要位是unset)将是首选的overlocally管理MAC地址,但没有其他订购保证.

更改版本3.7:普遍管理的MAC地址优先于本地管理的MAC地址,因为前者保证是独特的,而后者不是.

uuid.uuid1 (node=None, clock_seq=None)

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

uuid.uuid3(namespace, name)

根据名称空间标识符(即aUUID)的MD5哈希值和名称生成一个UUID(这是一个字符串).

uuid.uuid4

生成一个随机的UUID。

uuid.uuid5 (namespace, name)

根据命名空间标识符(即aUUID)和名称(字符串)的SHA-1哈希生成UUID .

uuid模块定义以下命名空间标识符与uuid3()uuid5().

uuid.NAMESPACE_DNS

一起使用当指定了这个命名空间时,name字符串是一个完全限定的域名.

uuid.NAMESPACE_URL

当指定了这个命名空间时,name字符串是一个URL

uuid.NAMESPACE_OID

指定此命名空间时,name字符串是ISO OID.

uuid.NAMESPACE_X500

指定此命名空间时,name字符串是DER或atext输出中的X.500 DNformat

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

uuid.RESERVED_NCS

保留了NCS兼容性.

uuid.RFC_4122

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

uuid.RESERVED_MICROSOFT

保留用于Microsoft兼容性.

uuid.RESERVED_FUTURE

保留以供将来定义.

参见

RFC 4122 – 一个通用唯一标识符(UUID)URN命名空间
此规范为UUID定义了统一资源名称命名空间,UUID的内部格式以及生成UUID的方法.

示例

以下是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.bytesb"\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")

评论被关闭。