Часть кода:Должен ли я делать StringIO.close()?
import cStringIO
def f():
buffer = cStringIO.StringIO()
buffer.write('something')
return buffer.getvalue()
documentation говорит:
StringIO.close()
: Освободить буфер памяти. Попытка сделать еще операции с закрытым объектом StringIO вызовут ValueError.
Должен ли я сделать buffer.close()
, или это произойдет автоматически, когда буфер выходит из сферы действия и собирается ли мусор?
UPDATE:
Я сделал тест:
import StringIO, weakref
def handler(ref):
print 'Buffer died!'
def f():
buffer = StringIO.StringIO()
ref = weakref.ref(buffer, handler)
buffer.write('something')
return buffer.getvalue()
print 'before f()'
f()
print 'after f()'
Результат:
[email protected]:~/projects$ python test.py
before f()
Buffer died!
after f()
[email protected]:~/projects$
Почему бы не напечатать f(), а не только голый f()? – mpag