asilyator
Янв. 9, 2011 17:27:38
Какое исключение - в принципе не важно. Мы читаем кэш файл, если файл не найден - вызывается функция, заполняющая его данными, и читаем его еще раз.
doza_and
Янв. 9, 2011 17:33:40
Не буду навязывать стиль, но я в таких прямолинейных случаях просто if использую.
asilyator
Янв. 9, 2011 17:37:20
Меня интересовал абстрактный случай, но вот конкретный:
try:
List = pickle.load(file(filename))
except IOError:
refresh()
List = pickle.load(file(filename))
Получается копипаст кода.
doza_and
Янв. 9, 2011 17:58:10
if not os.path.exist(name):
refresh()
List = pickle.load(file(filename))
общий try не помешает конечно
asilyator
Янв. 9, 2011 19:44:27
А как это сделать в абстрактном случае, если узнать, будет ли ошибка, можно, только выполнив выражение?
FishHook
Янв. 9, 2011 20:25:37
asilyator
Меня интересовал абстрактный случай, но вот конкретный:
try:
List = pickle.load(file(filename))
except IOError:
refresh()
List = pickle.load(file(filename))
Получается копипаст кода.
дурь какая то если честно
Почему нельзя сразу вызов функции обернуть в цикл?
o7412369815963
Янв. 9, 2011 22:01:23
что-б не было копипаста - выносите в ф-ию, для этого они и созданы.
к goto так же относится - если хотите goto значит нужно использовать ф-ии…
bw
Янв. 10, 2011 00:32:48
:-)
while True:
try:
List = pickle.load(file(filename))
except IOError:
refresh()
else:
break
А если серьёзно, то за такой код нужно кастрировать.
..bw
asilyator
Янв. 10, 2011 10:21:26
bw
А если серьёзно, то за такой код нужно кастрировать.
:) А за что так?
Soteric
Янв. 10, 2011 12:24:55
Вызовите метод два раза как и собирались, никто от этого не пострадает. А вот эти “элегантные” нагромождения с while else break сразу вызовут вопросы и недоумение у того, кто будет читать код. KISS.