使用Python UUID模块检查UUID变化

3

当我使用Python uuid模块中的UUID()函数检查我们的测试UUID之一时,我遇到了这种奇怪的行为。

from uuid import UUID uuid1 = UUID('00000000-0000-0000-0000-000000000000', version=1) print uuid1 00000000-0000-1000-8000-000000000000

如果不指定版本,则可以正常工作。 uuid0 = UUID('00000000-0000-0000-0000-000000000000') print uuid0 00000000-0000-0000-0000-000000000000

这是预期的行为吗?还有其他副作用需要担心吗?

在Python中是否有更安全或更好的方法来测试UUID,而不是使用UUID()函数,或者我误用了此函数?

1个回答

2

从代码注释中

 The 'version' argument is optional; if given, the resulting
        UUID will have its variant and version set according to RFC 4122,
        overriding the given 'hex', 'bytes', 'bytes_le', 'fields', or 'int'.

RFC版本

生成uuid可以使用以下函数之一,具体取决于uuid类型。

uuid1(), uuid3(), uuid4(), uuid5()

你已经知道使用UUID()将UUID解析为对象。 Python文档

感谢您发表评论!我已经测试了其他版本并阅读了RFC,因此怀疑可能会出现这样的情况,但还没有查看代码。如果它像其他格式不正确的情况一样失败了检查并引发了ValueError,那么我会更加高兴,但是很遗憾没有这样。 - michaelcoyote

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接