Форум сайта python.su
-2
Какое исключение - в принципе не важно. Мы читаем кэш файл, если файл не найден - вызывается функция, заполняющая его данными, и читаем его еще раз.
Офлайн
253
Не буду навязывать стиль, но я в таких прямолинейных случаях просто if использую.
Офлайн
-2
Меня интересовал абстрактный случай, но вот конкретный:
try:
List = pickle.load(file(filename))
except IOError:
refresh()
List = pickle.load(file(filename))
Офлайн
253
if not os.path.exist(name):
refresh()
List = pickle.load(file(filename))
Офлайн
-2
А как это сделать в абстрактном случае, если узнать, будет ли ошибка, можно, только выполнив выражение?
Офлайн
568
asilyatorдурь какая то если честно
Меня интересовал абстрактный случай, но вот конкретный:Получается копипаст кода.try:
List = pickle.load(file(filename))
except IOError:
refresh()
List = pickle.load(file(filename))
Офлайн
32
что-б не было копипаста - выносите в ф-ию, для этого они и созданы.
к goto так же относится - если хотите goto значит нужно использовать ф-ии…
Офлайн
20
:-)
while True:
try:
List = pickle.load(file(filename))
except IOError:
refresh()
else:
break
Офлайн
-2
bw:) А за что так?
А если серьёзно, то за такой код нужно кастрировать.
Офлайн
20
Вызовите метод два раза как и собирались, никто от этого не пострадает. А вот эти “элегантные” нагромождения с while else break сразу вызовут вопросы и недоумение у того, кто будет читать код. KISS.
Офлайн