funkybob ist eine Python-Bibliothek zum Generieren zufälliger Namen im Docker-Stil, wie diese:
ecstatic_ritchie, kind_beaver, sharp_heisenberg, angry_nightingale, ...
funkybob unterstützt die Generierung von Namen, denen eine beliebige Anzahl von Adjektiven vorangestellt ist, um die Anzahl der generierten eindeutigen Namen zu erhöhen:
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, ...
Bei der Verwendung mehrerer Adjektive stellt funkybob sicher, dass zwei Namen mit demselben Adjektivsatz nicht vorkommen können, auch wenn die Reihenfolge unterschiedlich ist. Wenn also beispielsweise der Name inspiring_stupefied_payne
generiert wurde, können Sie sicher sein, dass der Name stupefied_inspiring_payne
später nicht generiert wird. Dadurch sind Namen viel leichter zu unterscheiden und es ist weniger wahrscheinlich, dass sie Verwirrung stiften.
Das Paket wird auf PyPI gehostet. Zur Installation verwenden Sie:
$ pip install funkybob
funkybob liefert drei verschiedene Namensgeneratoren:
SimpleNameGenerator : Dies stellt eine deterministische Reihenfolge von Namen bereit – ohne Zufälligkeit. Dadurch werden doppelte Namen zurückgegeben, sobald alle Kombinationen ermittelt wurden. Nützlich, wenn Ihnen nur die Leistung am Herzen liegt.
RandomNameGenerator : Gibt zufällig generierte Namen zurück. Es können jederzeit doppelte Namen zurückgegeben werden.
UniqueRandomNameGenerator : Gibt zufällig generierte Namen zurück, aber im Gegensatz zu RandomNameGenerator werden keine Duplikate zurückgegeben. Im Gegensatz zu den anderen beiden Generatoren hat dieser eine begrenzte Größe und liefert keine Werte mehr, sobald alle eindeutigen Namen zurückgegeben wurden.
Diese Tabelle fasst die Funktionen aller drei Generatoren zusammen:
Generator | Unendlich | Zufällig | Duplikate |
---|---|---|---|
SimpleNameGenerator | Ja | NEIN | Ja |
RandomNameGenerator | Ja | Ja | Ja |
UniqueRandomNameGenerator | NEIN | Ja | NEIN |
Alle drei Generatoren sind iterierbar, was bedeutet, dass Sie einfach iter()
und next()
verwenden können, um Namen abzurufen:
>> > import funkybob
>> > generator = funkybob . RandomNameGenerator ()
>> > it = iter ( generator )
>> > next ( it )
'practical_hoover'
>> > next ( it )
'stupefied_ramanujan'
>> > next ( it )
'zealous_aryabhata'
Sie können die members
und separator
-Parameter übergeben, um die Anzahl der Adjektive oder die Formatierung von Namen zu ändern:
>> > # 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'
Generatoren verfügen über ein unique_count
-Attribut, mit dem Sie die Anzahl der eindeutigen Namen überprüfen können, die generiert werden können:
>> > generator . unique_count
740094
Zusätzlich zu all dem bietet UniqueRandomNameGenerator eine sequenzähnliche Schnittstelle, was bedeutet, dass Sie beispielsweise die Indizierung oder die len()
Methode verwenden können (was dem Zugriff auf das Attribut unique_count
gleichkommt):
>> > generator = funkybob . UniqueRandomNameGenerator ()
>> > generator [ 0 ]
'xenodochial_yalow'
>> > generator [ 1 ]
'kind_mccarthy'
>> > generator [ 2 ]
'happy_hawking'
>> > len ( generator )
16089
Sie können die Anzahl der members
erhöhen, um die Größe zu erhöhen, allerdings auf Kosten längerer Namen.
UniqueRandomNameGenerator unterstützt auch einen zusätzlichen Parameter: seed
. Dies kann zur Initialisierung des Pseudozufallsgenerators verwendet werden. Wenn Sie immer den gleichen Wert übergeben, wird die gleiche Namensfolge generiert. Dies kann in Tests nützlich sein, wenn Sie vorhersehbare Namen benötigen.