– 根据-Internet Protocols and Support(Python教程)的UUID对象(参考资料)
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, fields或int中的一个.version参数是可选的;如果给定,生成的UUID将根据 RFC 4122 设置其变量和版本号,覆盖ingiven hex, bytes, bytes_le, fields或int.
的比较UUID对象是通过比较它们的
UUID.int属性来创建的。与非UUID对象的比较aTypeError.str(uuid)以12345678-1234-5678-1234-567812345678的形式返回一个字符串,其中32个十六进制数字表示UUID .
UUID实例具有这些只读权限属性:
UUID.bytes-
UUID为16字节字符串(包含大端字节顺序的六个整数字段).
UUID.fields-
UUID的六个整数字段的元组,它们也可用作六个属性和两个派生属性:
字段 含义 time_lowUUID的前32位 time_midUUID的下一个16位 time_hi_versionUUID的下一个16位 clock_seq_hi_variantUUID的下一个8位 clock_seq_lowUUID的下一个8位 nodeUUID的最后48位 time60位时间戳 clock_seq14位序列号
UUID.hex-
UUID为32个字符的十六进制字符串.
UUID.int-
UUID为128位整数.
UUID.urn-
UUID为指定的URN在 RFC 4122 .
UUID.variant-
UUID变体,用于确定UUID的内部布局。这将是常量
RESERVED_NCS,RFC_4122,RESERVED_MICROSOFT或RESERVED_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,序列号和当前时间。如果没有给出node,
getnode()用于获取硬件地址。如果给出clock_seq,则将其用作序列号;否则选择一个随机的14位序列号.
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")
评论被关闭。