Python 模塊 uuid-全局唯一標識符

Python 模塊 uuid-全局唯一標識符

模塊 uuid 實現了全局唯一標識符(Universally Unique Identifies - RFC 4122)。

RFC 4122 定義了生成全局唯一標識符的一個系統,它不需要中央註冊中心。一個 UUID 值能保證跨越空間和時間的唯一性,長度為 128-bit。使用 UUID為一個文檔,應用,主機生成一個唯一標識是非常有用的。包含以下三種算法:

  • 使用 IEEEE 802 MAC 地址作為生成使用的資源
  • 使用 pseudo-random 數字
  • 使用公共的字符串結合哈希算法

UUID 1 - IEEE 802 Mac 地址


UUID 1 使用主機的 MAC 地址生成,模塊 uuid 使用函數 getnode() 返回系統的 MAC 地址。

Python 模塊 uuid-全局唯一標識符

執行:

Python 模塊 uuid-全局唯一標識符

使用函數 uuid1() 根據當前 MAC 地址生成 UUID 值,第一個參數 node 是可選的,默認使用 getnode() 值。

Python 模塊 uuid-全局唯一標識符

執行:

Python 模塊 uuid-全局唯一標識符

因為每個電腦使用的 MAC 地址是不一樣的,所以在不同的電腦返回的值不一樣。

UUID 3 和 UUID 5


有時候根據命名空間生成一個 UUID 值而不是根據隨機數或者基於時間。UUID 3 和 UUID 5 實現了根據特定的名稱生成哈希值。例如根據DNS生成。

Python 模塊 uuid-全局唯一標識符

執行:

Python 模塊 uuid-全局唯一標識符

根據 DNS 生成 UUID 值,第一個參數傳入 uuid.NAMESPACE_DNS 作為命名空間的參數。如果給定的命名空間值相同,則每次生成的值相同。

UUID 4 隨機值


UUID 4 生成的值要比 UUID 1 更隨機,能有效避免衝突。

Python 模塊 uuid-全局唯一標識符

執行:

Python 模塊 uuid-全局唯一標識符

UUID 對象


除了生成 UUID 值外,還可能根據 UUID 字符串構造 UUID 對象,這樣更方便比較和排序。

Python 模塊 uuid-全局唯一標識符

執行:

Python 模塊 uuid-全局唯一標識符


分享到:


相關文章: