У меня есть функция, как:Открыть файл и с заявлением в Python
def func(filename):
with open(filename) as f:
return [line.split('\t')[0] for line in f]
ли «с» закрытием файла заявление, даже если есть «внезапное» возвращение функции? Могу ли я игнорировать заявление «с»? то есть безопасно и эквивалентно (с точки зрения утечки памяти),
def func(filename):
return [line.split('\t')[0] for line in open(filename)]
?
жаль, что это не так ясно для меня, я могу игнорировать «с» и использовать второй вариант? – elyase
@elyase: В обоих примерах нет утечки памяти, но вы явно не закрываете дескриптор файла во втором, что может привести к проблемам: http://stackoverflow.com/questions/4599980/python-close-file -descriptor-question – Blender
отличный пример! Возможно, вы захотите изменить «... как тест» на что-то еще, он немного затормозил, так как ваше имя функции также проверяется. – monkut