Безопасен ли этот код?
Код: Выделить всё
def get_random_strings():
with open('/dev/urandom', 'rb') as f:
yield from map(bytes.hex, iter(f.readline, ''))
вызывающие программы будут использовать его как обычную итерацию,
Код: Выделить всё
for i, rand in zip(range(10), get_random_strings()):
print(i, rand)
но генератор оборачивает контекстный менеджер потока, поэтому я беспокоюсь, что если за пределами контекстного менеджера произойдут какие-либо ошибки, которые приведут к преждевременному завершению программы, контекстный менеджер может не отпускать изящно его ручки.
Подробнее здесь:
https://stackoverflow.com/questions/791 ... -in-python