funkybob 是一個用於產生 Docker 風格的隨機名稱的 Python 函式庫,如下所示:
ecstatic_ritchie, kind_beaver, sharp_heisenberg, angry_nightingale, ...
funkybob 支援產生前面帶有任意數量形容詞的名稱,以增加可以產生的唯一名稱的數量:
Random names with no adjectives:
swirles, khorana, blackwell, ...
Random names preceeded by an adjective:
ecstatic_ritchie, kind_beaver, sharp_heisenberg, ...
Random names preceeded by two adjectives:
admiring_dazzling_noether, thirsty_wonderful_agnesi, silly_wizardly_feynman, ...
Random names preceeded by three adjectives:
cranky_goofy_hopeful_wright, competent_jolly_suspicious_kare, cocky_competent_gifted_yalow, ...
當使用多個形容詞時,funkybob 確保不會出現具有同一組形容詞的兩個名稱,即使順序不同。因此,例如,如果產生了名稱inspiring_stupefied_payne
yne,那麼您可以確定以後不會產生名稱stupefied_inspiring_payne
。這使得名稱更容易區分並且不太可能產生混淆。
該套件託管在 PyPI 上,安裝時使用:
$ pip install funkybob
funkybob 提供了三種不同的名稱產生器:
SimpleNameGenerator :這提供了確定性的名稱序列-不涉及隨機性。一旦產生所有組合,這將返回重複的名稱。如果您只關心效能,則很有用。
RandomNameGenerator :傳回隨機產生的名稱。它可能隨時傳回重複的名稱。
UniqueRandomNameGenerator :傳回隨機產生的名稱,但與 RandomNameGenerator 不同的是,不傳回重複項。與其他兩個生成器不同,這個生成器的大小有限,一旦傳回所有唯一名稱,它將停止產生值。
下表總結了所有三個生成器的功能:
發電機 | 無限 | 隨機的 | 重複項 |
---|---|---|---|
簡單名稱產生器 | 是的 | 不 | 是的 |
隨機名稱產生器 | 是的 | 是的 | 是的 |
唯一隨機名稱產生器 | 不 | 是的 | 不 |
所有三個生成器都是可迭代的,這意味著您可以簡單地對它們使用iter()
和next()
來檢索名稱:
>> > import funkybob
>> > generator = funkybob . RandomNameGenerator ()
>> > it = iter ( generator )
>> > next ( it )
'practical_hoover'
>> > next ( it )
'stupefied_ramanujan'
>> > next ( it )
'zealous_aryabhata'
您可以傳遞members
和separator
參數來更改形容詞的數量或名稱的格式:
>> > # This will generate names with 3 members (2 adjectives + 1 last name),
>> > # separated by a colon
>> > generator = funkybob . RandomNameGenerator ( members = 3 , separator = ':' )
>> > it = iter ( generator )
>> > next ( it )
'friendly:hopeful:neumann'
>> > next ( it )
'admiring:trusting:montalcini'
>> > next ( it )
'practical:suspicious:blackwell'
生成器有一個unique_count
屬性,您可以使用它來檢查可以產生的唯一名稱的數量:
>> > generator . unique_count
740094
除了上述所有內容之外,UniqueRandomNameGenerator 還提供類似序列的接口,這意味著您可以使用索引或len()
方法(與存取unique_count
屬性相同):
>> > generator = funkybob . UniqueRandomNameGenerator ()
>> > generator [ 0 ]
'xenodochial_yalow'
>> > generator [ 1 ]
'kind_mccarthy'
>> > generator [ 2 ]
'happy_hawking'
>> > len ( generator )
16089
您可以增加members
數量以增加大小,但代價是名稱更長。
UniqueRandomNameGenerator 也支援一個附加參數: seed
。這可用於初始化偽隨機產生器。如果始終傳遞相同的值,則會產生相同的名稱序列。當您需要可預測的名稱時,這在測試中非常有用。