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
。这可用于初始化伪随机生成器。如果始终传递相同的值,则会生成相同的名称序列。当您需要可预测的名称时,这在测试中非常有用。