Форум сайта python.su
Shamanну в нем разобрался потому что,(точне там разбираться не в чем). Срезы научился через randint генерировать. Но с ужасом заметил что нету верхнего регистра
Почему именно uuid4?
Отредактировано vasyank (Ноя. 26, 2014 12:33:39)
Офлайн
uuid4 ничем не отличается от первоначального варианта, со всеми причитающимися.
def uuid4(): """Generate a random UUID.""" # When the system provides a version-4 UUID generator, use it. if _uuid_generate_random: _buffer = ctypes.create_string_buffer(16) _uuid_generate_random(_buffer) return UUID(bytes=_buffer.raw) # Otherwise, get randomness from urandom or the 'random' module. try: import os return UUID(bytes=os.urandom(16), version=4) except: import random bytes = [chr(random.randrange(256)) for i in range(16)] return UUID(bytes=bytes, version=4)
Офлайн
Shamanтоесть рандом любого рода не гарантирует уникальность?
uuid4 ничем не отличается от первоначального варианта, со всеми причитающимися.
Офлайн
import string import random class _A(object): def __init__(self, name, hash_code): self.name = name self.hash_code = hash_code class A(object): current_hashes = set() @classmethod def generate_hash_code(cls): while True: hash_code = ''.join([random.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) for _ in range(random.randint(10, 15))]) if hash_code not in cls.current_hashes: cls.current_hashes.add(hash_code) return hash_code def __new__(cls, *args, **kwargs): hash_code = cls.generate_hash_code() kwargs.update({'hash_code': hash_code}) return _A(*args, **kwargs) print A('Test').hash_code print A('Test').hash_code print A('Test').hash_code print A('Test').hash_code print A('Test').hash_code print 'Current hashes:', A.current_hashes
hdPhslOit2uRCZ
OJiLbln6dl8Ru
R4ghafikMex94
ktmsfG3yRD
VIflbXYnvqw4RC
Current hashes: set(['ktmsfG3yRD', 'VIflbXYnvqw4RC', 'OJiLbln6dl8Ru', 'R4ghafikMex94', 'hdPhslOit2uRCZ'])
Офлайн
о класс надо придумать как это в 3й питон перевести, а еще что будет если generate_hash_code словит фолс?
Отредактировано vasyank (Ноя. 26, 2014 13:47:56)
Офлайн
vasyankПойдет на следующую интерацию while. И так, пока не найдет уникальный hash. Вы можете поставить какой-то счетчик, и если за это количество циклов ничего не найдено, кидать exception.
а еще что будет если generate_hash_code словит фолс?
Офлайн
Спасибо всем! Последний предложенный код адаптировал на 3 питон, и функцию для кода по рекомендации Пайчарма, сделал статичной- все работает) set() и while True мего круто
) Осталось для меня только не познанным что случиться с сетом() после выполнения программы
Ну это уже по сути не важно
Отредактировано vasyank (Ноя. 26, 2014 15:40:58)
Офлайн
Я бы взял id() объекта и нашёл для этого значения md5.
Отредактировано py.user.next (Ноя. 27, 2014 05:48:53)
Офлайн