– 根据-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_safe
attributewhich使用此枚举来中继有关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_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_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")
评论被关闭。