funkybob هي مكتبة بايثون لإنشاء أسماء عشوائية على نمط Docker، مثل هذه:
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
، فيمكنك التأكد من أنه لن يتم إنشاء الاسم stupefied_inspiring_payne
لاحقًا. وهذا يجعل الأسماء أكثر سهولة في التمييز وأقل احتمالاً لتوليد الارتباك.
تتم استضافة الحزمة على PyPI، لتثبيت الاستخدام:
$ pip install funkybob
يقدم funkybob ثلاثة مولدات مختلفة للأسماء:
SimpleNameGenerator : يوفر هذا تسلسلًا محددًا للأسماء - دون أي عشوائية. سيؤدي هذا إلى إرجاع أسماء مكررة بمجرد إنتاج جميع المجموعات. مفيد إذا كان كل ما يهمك هو الأداء.
RandomNameGenerator : يقوم بإرجاع الأسماء التي تم إنشاؤها بشكل عشوائي. قد يُرجع أسماء مكررة في أي وقت.
UniqueRandomNameGenerator : يقوم بإرجاع الأسماء التي تم إنشاؤها بشكل عشوائي، ولكن على عكس RandomNameGenerator، لا يتم إرجاع أي تكرارات. على عكس المولدين الآخرين، فإن هذا المولد ذو حجم محدود وسيتوقف عن إنتاج القيم بمجرد إرجاع جميع الأسماء الفريدة.
يلخص هذا الجدول ميزات المولدات الثلاثة:
مولد | لانهائي | عشوائي | التكرارات |
---|---|---|---|
SimpleNameGenerator | نعم | لا | نعم |
RandomNameGenerator | نعم | نعم | نعم |
UniqueRandomNameGenerator | لا | نعم | لا |
جميع المولدات الثلاثة قابلة للتكرار، مما يعني أنه يمكنك ببساطة استخدام 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
. يمكن استخدام هذا لتهيئة المولد العشوائي الزائف. إذا قمت دائمًا بتمرير نفس القيمة، فسيتم إنشاء نفس تسلسل الأسماء. يمكن أن يكون هذا مفيدًا في الاختبارات عندما تحتاج إلى أسماء يمكن التنبؤ بها.