uuid
— UUID objects according to RFC 4122符合RFC 4122的UUID对象¶
Source code: Lib/uuid.py
This module provides immutable 该模块提供了不可变的UUID
objects (the UUID
class) and the functions uuid1()
, uuid3()
, uuid4()
, uuid5()
for generating version 1, 3, 4, and 5 UUIDs as specified in RFC 4122.UUID
对象(UUID
类)和函数uuid1()
、uuid3()
、uuid4()
和uuid4()
,用于生成RFC 4122中指定的版本1、3、4和5 UUID。
If all you want is a unique ID, you should probably call 如果您只需要一个唯一的ID,那么您可能应该调用uuid1()
or uuid4()
. uuid1()
或uuid4()
。Note that 请注意,uuid1()
may compromise privacy since it creates a UUID containing the computer’s network address. uuid1()
可能会损害隐私,因为它会创建一个包含计算机网络地址的UUID。uuid4()
creates a random UUID.uuid4()
创建一个随机UUID。
Depending on support from the underlying platform, 根据底层平台的支持,uuid1()
may or may not return a “safe” UUID. uuid1()
可能返回也可能不返回“安全”UUID。A safe UUID is one which is generated using synchronization methods that ensure no two processes can obtain the same UUID. 安全UUID是使用同步方法生成的,确保没有两个进程可以获得相同的UUID。All instances of 所有UUID
have an is_safe
attribute which relays any information about the UUID’s safety, using this enumeration:UUID
实例都有一个is_safe
属性,该属性使用此枚举传递有关UUID安全性的任何信息:
-
class
uuid.
SafeUUID
¶ -
New in version 3.7.版本3.7中新增。-
safe
¶ The UUID was generated by the platform in a multiprocessing-safe way.UUID是由平台以多处理安全的方式生成的。
-
unsafe
¶ The UUID was not generated in a multiprocessing-safe way.UUID不是以多处理安全的方式生成的。
-
unknown
¶ The platform does not provide information on whether the UUID was generated safely or not.平台不提供有关UUID是否安全生成的信息。
-
-
class
uuid.
UUID
(hex=None, bytes=None, bytes_le=None, fields=None, int=None, version=None, *, is_safe=SafeUUID.unknown)¶ Create a UUID from either a string of 32 hexadecimal digits, a string of 16 bytes in big-endian order as the bytes argument, a string of 16 bytes in little-endian order as the bytes_le argument, a tuple of six integers (32-bit time_low, 16-bit time_mid, 16-bit time_hi_version, 8-bit clock_seq_hi_variant, 8-bit clock_seq_low, 48-bit node) as the fields argument, or a single 128-bit integer as the int argument.从32个十六进制数字的字符串、以大端顺序的16个字节的字符串作为bytes参数、以小端顺序的十六个字节的串作为bytes_le参数、以六个整数(32位time_low、16位time_mid、16位time_hi_version、8位clock_seq_hi_variant、8位clock_seq_low和48位node)作为字段参数创建UUID,或单个128位整数作为int参数。When a string of hex digits is given, curly braces, hyphens, and a URN prefix are all optional.当给定十六进制数字字符串时,大括号、连字符和URN前缀都是可选的。For example, these expressions all yield the same UUID:例如,这些表达式都产生相同的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)Exactly one of hex, bytes, bytes_le, fields, or int must be given.必须给出hex、bytes、bytes_le、fields或int中的一个。The version argument is optional; if given, the resulting UUID will have its variant and version number set according to RFC 4122, overriding bits in the given hex, bytes, bytes_le, fields, or int.version参数是可选的;如果给定,生成的UUID将根据RFC 4122设置其变体和版本号,覆盖给定hex、bytes、bytes_le、fields或int中的位。Comparison of UUID objects are made by way of comparing theirUUID对象的比较是通过比较它们的UUID.int
attributes.UUID.int
属性进行的。Comparison with a non-UUID object raises a与非UUID对象进行比较会引发TypeError
.TypeError
。str(uuid)
returns a string in the form返回格式为12345678-1234-5678-1234-567812345678
where the 32 hexadecimal digits represent the UUID.12345678-1234-5678-1234-567812345678
的字符串,其中32个十六进制数字表示UUID。
UUID
instances have these read-only attributes:实例具有以下只读属性:
-
UUID.
bytes
¶ The UUID as a 16-byte string (containing the six integer fields in big-endian byte order).作为16字节字符串的UUID(包含以大端字节顺序排列的六个整数字段)。
-
UUID.
bytes_le
¶ The UUID as a 16-byte string (with time_low, time_mid, and time_hi_version in little-endian byte order).UUID为16字节字符串(time_low、time_mid和time_hi_version按低位字节顺序排列)。
-
UUID.
fields
¶ A tuple of the six integer fields of the UUID, which are also available as six individual attributes and two derived attributes:UUID的六个整数字段组成的元组,也可以作为六个单独属性和两个派生属性使用:Field字段Meaning含义time_low
the first 32 bits of the UUIDUUID的前32位time_mid
the next 16 bits of the UUIDUUID的下16位time_hi_version
the next 16 bits of the UUIDUUID的下16位clock_seq_hi_variant
the next 8 bits of the UUIDUUID的下8位clock_seq_low
the next 8 bits of the UUIDUUID的下8位node
the last 48 bits of the UUIDUUID的最后48位the 60-bit timestamp60位时间戳clock_seq
the 14-bit sequence number14位序列号
-
UUID.
hex
¶ The UUID as a 32-character lowercase hexadecimal string.UUID为32个字符的小写十六进制字符串。
-
UUID.
int
¶ The UUID as a 128-bit integer.UUID为128位整数。
-
UUID.
variant
¶ The UUID variant, which determines the internal layout of the UUID.UUID变体,用于确定UUID的内部布局。This will be one of the constants这将是常量RESERVED_NCS
,RFC_4122
,RESERVED_MICROSOFT
, orRESERVED_FUTURE
.RESERVED_NCS
、RFC_4122
、RESERVED_MICROSOFT
或RESERVED_FUTURE
之一。
-
UUID.
version
¶ The UUID version number (1 through 5, meaningful only when the variant isUUID版本号(1到5,仅当变量为RFC_4122
).RFC_4122
时才有意义)。
-
UUID.
is_safe
¶ An enumeration ofSafeUUID
which indicates whether the platform generated the UUID in a multiprocessing-safe way.SafeUUID
的枚举,指示平台是否以多处理安全的方式生成UUID。New in version 3.7.版本3.7中新增。
The uuid
module defines the following functions:uuid
模块定义以下函数:
-
uuid.
getnode
()¶ Get the hardware address as a 48-bit positive integer.以48位正整数的形式获取硬件地址。The first time this runs, it may launch a separate program, which could be quite slow.第一次运行时,它可能会启动一个单独的程序,这可能会很慢。If all attempts to obtain the hardware address fail, we choose a random 48-bit number with the multicast bit (least significant bit of the first octet) set to 1 as recommended in RFC 4122.如果所有获取硬件地址的尝试都失败,我们选择一个随机的48位数字,并按照RFC 4122中的建议将多播位(第一个八位字节的最低有效位)设置为1。“Hardware address” means the MAC address of a network interface.“硬件地址”指网络接口的MAC地址。On a machine with multiple network interfaces, universally administered MAC addresses (i.e. where the second least significant bit of the first octet is unset) will be preferred over locally administered MAC addresses, but with no other ordering guarantees.在具有多个网络接口的机器上,通用管理的MAC地址(即第一个八位字节的第二个最低有效位未设置)将优先于本地管理的MAC,但没有其他排序保证。Changed in version 3.7:版本3.7中更改:Universally administered MAC addresses are preferred over locally administered MAC addresses, since the former are guaranteed to be globally unique, while the latter are not.通用管理的MAC地址优先于本地管理的MAC,因为前者保证全局唯一,而后者则不然。
-
uuid.
uuid1
(node=None, clock_seq=None)¶ Generate a UUID from a host ID, sequence number, and the current time.从主机ID、序列号和当前时间生成UUID。If node is not given,如果未给定节点,则使用getnode()
is used to obtain the hardware address.getnode()
获取硬件地址。If clock_seq is given, it is used as the sequence number; otherwise a random 14-bit sequence number is chosen.如果给定clock_seq,则用作序列号;否则,选择随机14位序列号。
-
uuid.
uuid3
(namespace, name)¶ Generate a UUID based on the MD5 hash of a namespace identifier (which is a UUID) and a name (which is a string).根据命名空间标识符(UUID)和名称(字符串)的MD5哈希生成UUID。
-
uuid.
uuid4
()¶ Generate a random UUID.生成随机UUID。
-
uuid.
uuid5
(namespace, name)¶ Generate a UUID based on the SHA-1 hash of a namespace identifier (which is a UUID) and a name (which is a string).根据命名空间标识符(UUID)的SHA-1哈希和名称(字符串)生成UUID。
The uuid
module defines the following namespace identifiers for use with uuid3()
or uuid5()
.uuid
模块定义了以下名称空间标识符,用于uuid3()
或uuid5()
。
-
uuid.
NAMESPACE_DNS
¶ When this namespace is specified, the name string is a fully-qualified domain name.指定此命名空间时,name字符串是完全限定的域名。
-
uuid.
NAMESPACE_URL
¶ When this namespace is specified, the name string is a URL.指定此名称空间时,name字符串是URL。
-
uuid.
NAMESPACE_OID
¶ When this namespace is specified, the name string is an ISO OID.指定此名称空间时,name字符串为ISO OID。
-
uuid.
NAMESPACE_X500
¶ When this namespace is specified, the name string is an X.500 DN in DER or a text output format.指定此名称空间时,name字符串是DER格式的X.500 DN或文本输出格式。
The uuid
module defines the following constants for the possible values of the variant
attribute:uuid
模块为variant
属性的可能值定义以下常量:
-
uuid.
RESERVED_NCS
¶ Reserved for NCS compatibility.保留NCS兼容性。
-
uuid.
RESERVED_MICROSOFT
¶ Reserved for Microsoft compatibility.为与Microsoft兼容而保留。
-
uuid.
RESERVED_FUTURE
¶ Reserved for future definition.保留以供将来定义。
See also
- RFC 4122 -
A Universally Unique IDentifier (UUID) URN Namespace通用唯一标识符(UUID)URN命名空间 This specification defines a Uniform Resource Name namespace for UUIDs, the internal format of UUIDs, and methods of generating UUIDs.该规范定义了UUID的一致性资源名称名称空间、UUID内部格式和生成UUID方法。
Example示例¶
Here are some examples of typical usage of the 以下是uuid
module: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
b'\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')