最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python生成隨機(jī)唯一id的幾種實(shí)現(xiàn)方法

 更新時(shí)間:2025年07月15日 11:19:56   作者:alden_ygq  
在Python中生成隨機(jī)唯一ID有多種方法,根據(jù)不同的需求場(chǎng)景可以選擇最適合的方案,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在 Python 中生成隨機(jī)唯一 ID 有多種方法,根據(jù)不同的需求場(chǎng)景可以選擇最適合的方案。以下是 5 種常用方法及其詳細(xì)實(shí)現(xiàn):

方法 1:使用 UUID 模塊(推薦)

import uuid

# 生成版本 4 的隨機(jī) UUID(最常用)
unique_id = uuid.uuid4()
print(unique_id)  # 輸出: f47ac10b-58cc-4372-a567-0e02b2c3d479
print(str(unique_id))  # 轉(zhuǎn)換為字符串

# 生成版本 1 的 UUID(基于時(shí)間戳和 MAC 地址)
timestamp_id = uuid.uuid1()
print(timestamp_id)

# 生成緊湊的 22 字符 URL 安全 ID
url_safe_id = uuid.uuid4().urn[9:]  # 去掉 'urn:uuid:' 前綴
print(url_safe_id)  # 輸出: f47ac10b58cc4372a5670e02b2c3d479

特點(diǎn)

  • 標(biāo)準(zhǔn)化的唯一標(biāo)識(shí)符
  • 極低的碰撞概率(1/2^128)
  • 內(nèi)置 Python 標(biāo)準(zhǔn)庫

方法 2:使用 Secrets 模塊(安全敏感場(chǎng)景)

import secrets
import string

# 生成 16 字節(jié)的隨機(jī) ID
secure_id = secrets.token_urlsafe(16)  # 24 字符的 URL 安全字符串
print(secure_id)  # 輸出類似: Drmhze6EPcv0fN_81Bj-nA

# 自定義格式 ID
def generate_custom_id(length=16):
    alphabet = string.ascii_letters + string.digits
    return ''.join(secrets.choice(alphabet) for _ in range(length))

custom_id = generate_custom_id()
print(custom_id)  # 輸出類似: aB3dEfG7hIj9KlMn

特點(diǎn)

  • 加密安全的隨機(jī)數(shù)生成器
  • 適合密碼、API 密鑰等安全敏感場(chǎng)景
  • 防止時(shí)序攻擊

方法 3:時(shí)間戳 + 隨機(jī)數(shù)(簡(jiǎn)單場(chǎng)景)

import time
import random
import string

def timestamp_random_id():
    # 獲取毫秒級(jí)時(shí)間戳
    millis = int(time.time() * 1000)
    # 生成 6 位隨機(jī)字符串
    rand_str = ''.join(random.choices(string.ascii_uppercase + string.digits, k=6))
    return f"{millis}-{rand_str}"

print(timestamp_random_id())  # 輸出: 1710000000000-AB3D9F

特點(diǎn)

  • 可讀性較好
  • 包含時(shí)間信息
  • 適用于低并發(fā)場(chǎng)景

方法 4:使用 ShortUUID 庫(短 ID)

# 需要先安裝: pip install shortuuid
import shortuuid

# 生成 22 字符的短 UUID
short_id = shortuuid.uuid()
print(short_id)  # 輸出類似: vytxeTZskVKR7C7WgdSP3d

# 自定義長(zhǎng)度 (8-22 字符)
custom_short_id = shortuuid.ShortUUID().random(length=10)
print(custom_short_id)  # 輸出類似: 5x4H3dK7Yt

特點(diǎn)

  • 比標(biāo)準(zhǔn) UUID 更短
  • 保持唯一性
  • 可自定義字母表

方法 5:數(shù)據(jù)庫自增 ID + 隨機(jī)后綴(分布式系統(tǒng))

import random
import string

# 模擬數(shù)據(jù)庫自增 ID
global_counter = 1000

def distributed_id():
    global global_counter
    global_counter += 1
    # 添加 4 位隨機(jī)后綴防止沖突
    suffix = ''.join(random.choices(string.ascii_lowercase + string.digits, k=4))
    return f"{global_counter:08d}-{suffix}"

print(distributed_id())  # 輸出: 00001001-a3b7

特點(diǎn)

  • 適合分布式系統(tǒng)
  • 包含順序信息
  • 減少碰撞概率

方法對(duì)比表

方法長(zhǎng)度唯一性安全性適用場(chǎng)景
UUID436 字符極高通用唯一標(biāo)識(shí)
Secrets Token自定義(16+)極高API 密鑰、密碼重置令牌
時(shí)間戳+隨機(jī)數(shù)~20 字符日志跟蹤、簡(jiǎn)單應(yīng)用
ShortUUID8-22 字符URL 短鏈、用戶友好 ID
數(shù)據(jù)庫ID+隨機(jī)后綴可變分布式系統(tǒng)、訂單號(hào)

最佳實(shí)踐建議

  • 通用場(chǎng)景:使用 uuid.uuid4() 最簡(jiǎn)單可靠
  • 安全敏感:使用 secrets.token_urlsafe(16)
  • URL 友好:使用 shortuuid.uuid() 或 uuid.uuid4().hex
  • 高并發(fā)系統(tǒng):組合時(shí)間戳+機(jī)器ID+序列號(hào)
import socket
import time

machine_id = socket.gethostname().hash() % 1000  # 簡(jiǎn)化的機(jī)器標(biāo)識(shí)
sequence = 0

def high_concurrency_id():
    global sequence
    sequence = (sequence + 1) % 10000
    millis = int(time.time() * 1000)
    return f"{millis}{machine_id:04d}{sequence:04d}"

人類可讀:使用可發(fā)音的組合

import random

def human_friendly_id():
    adjectives = ['Red', 'Happy', 'Swift', 'Brave', 'Calm']
    nouns = ['Tiger', 'Eagle', 'River', 'Mountain', 'Star']
    number = random.randint(1000, 9999)
    return f"{random.choice(adjectives)}{random.choice(nouns)}{number}"

print(human_friendly_id())  # 輸出: HappyEagle5678

根據(jù)具體需求選擇合適的方法,大多數(shù)情況下 Python 內(nèi)置的 uuid 模塊已經(jīng)足夠滿足需求,且能保證極高的唯一性。

到此這篇關(guān)于python生成隨機(jī)唯一id的幾種實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)python生成隨機(jī)唯一id內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)簡(jiǎn)單的聊天小程序

    python實(shí)現(xiàn)簡(jiǎn)單的聊天小程序

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單的聊天小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Python重新引入被覆蓋的自帶function

    Python重新引入被覆蓋的自帶function

    最近在寫python應(yīng)用時(shí)遇到一個(gè)問題: 引入某個(gè)模塊時(shí)會(huì)自動(dòng)引入自定義的int到python的namespace中, 從而覆蓋了python自帶的int function. 因?yàn)槲覀冃枰褂胮ython的int, 所以不得不找到重新引入這int的方法.
    2014-07-07
  • python nohup 實(shí)現(xiàn)遠(yuǎn)程運(yùn)行不宕機(jī)操作

    python nohup 實(shí)現(xiàn)遠(yuǎn)程運(yùn)行不宕機(jī)操作

    這篇文章主要介紹了python nohup 實(shí)現(xiàn)遠(yuǎn)程運(yùn)行不宕機(jī)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • opencv實(shí)現(xiàn)圖片模糊和銳化操作

    opencv實(shí)現(xiàn)圖片模糊和銳化操作

    這篇文章主要為大家詳細(xì)介紹了opencv實(shí)現(xiàn)圖片模糊和銳化操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • python實(shí)現(xiàn)生成字符串大小寫字母和數(shù)字的各種組合

    python實(shí)現(xiàn)生成字符串大小寫字母和數(shù)字的各種組合

    這篇文章主要給大家介紹了關(guān)于python生成各種字符串的方法實(shí)例,給大家提供些思路,拋磚引玉,希望大家能夠喜歡
    2019-01-01
  • Python常見數(shù)據(jù)類型處理詳細(xì)代碼示例

    Python常見數(shù)據(jù)類型處理詳細(xì)代碼示例

    這篇文章主要介紹了Python常見數(shù)據(jù)類型處理的相關(guān)資料,包括Number、String、bool、List、Tuple、Set和Dictionary,每種數(shù)據(jù)類型都有其特定的用途和操作方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • Pandas分組聚合之groupby()、agg()方法的使用教程

    Pandas分組聚合之groupby()、agg()方法的使用教程

    今天看到pandas的聚合函數(shù)agg,比較陌生,平時(shí)的工作中處理數(shù)據(jù)的時(shí)候使用的也比較少,為了加深印象,總結(jié)一下使用的方法,下面這篇文章主要給大家介紹了關(guān)于Pandas分組聚合之groupby()、agg()方法的使用教程,需要的朋友可以參考下
    2023-01-01
  • python 實(shí)現(xiàn)多維數(shù)組轉(zhuǎn)向量

    python 實(shí)現(xiàn)多維數(shù)組轉(zhuǎn)向量

    今天小編就為大家分享一篇python 實(shí)現(xiàn)多維數(shù)組轉(zhuǎn)向量,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • JetBrains PyCharm(Community版本)的下載、安裝和初步使用圖文教程詳解

    JetBrains PyCharm(Community版本)的下載、安裝和初步使用圖文教程詳解

    這篇文章主要介紹了JetBrains PyCharm(Community版本)的下載、安裝和初步使用教程,本文圖文并茂給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)和工作具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2020-03-03
  • Python中ModuleNotFoundError模塊未找到的解決方法

    Python中ModuleNotFoundError模塊未找到的解決方法

    ModuleNotFoundError是常見的運(yùn)行時(shí)錯(cuò)誤,通常由模塊路徑配置、安裝缺失或命名沖突導(dǎo)致,本文主要介紹了Python中ModuleNotFoundError模塊未找到的解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-06-06

最新評(píng)論

鹰潭市| 西昌市| 宁乡县| 孟州市| 桑植县| 博湖县| 图们市| 韩城市| 大理市| 南丹县| 舒兰市| 泰兴市| 伊金霍洛旗| 尖扎县| 哈巴河县| 循化| 瑞安市| 呼和浩特市| 德安县| 神木县| 崇阳县| 海林市| 汝阳县| 乐安县| 明光市| 泗阳县| 玉溪市| 青冈县| 平湖市| 清河县| 思南县| 静乐县| 新兴县| 拉萨市| 隆尧县| 株洲县| 安西县| 安溪县| 水城县| 修文县| 乐亭县|