Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 9, 2011 16:22:57

asilyator
От:
Зарегистрирован: 2010-10-24
Сообщения: 276
Репутация: +  -2  -
Профиль   Отправить e-mail  

Элегантно сделать

Как элегантно написать такое:

    
try:
выражение
except Error:
fix_Error()
выражение
чтобы не писать выражение 2 раза?



Офлайн

#2 Янв. 9, 2011 16:46:01

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Элегантно сделать

while 1:
try:
expr
break
except:
fix_error()



Отредактировано (Янв. 9, 2011 16:50:08)

Офлайн

#3 Янв. 9, 2011 16:49:47

asilyator
От:
Зарегистрирован: 2010-10-24
Сообщения: 276
Репутация: +  -2  -
Профиль   Отправить e-mail  

Элегантно сделать

А короче нельзя?



Офлайн

#4 Янв. 9, 2011 16:51:09

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Элегантно сделать

отредактировал покороче
может и можно вы не просили самую короткую версию



Офлайн

#5 Янв. 9, 2011 16:55:43

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Элегантно сделать

Если у вас очень длинное выражение обычно функцию делают, Если ценен контекст выполнения можно с yield поиграться



Офлайн

#6 Янв. 9, 2011 16:56:20

asilyator
От:
Зарегистрирован: 2010-10-24
Сообщения: 276
Репутация: +  -2  -
Профиль   Отправить e-mail  

Элегантно сделать

Ну дай покороче, если найдешь, только новым постом :)



Офлайн

#7 Янв. 9, 2011 16:58:03

asilyator
От:
Зарегистрирован: 2010-10-24
Сообщения: 276
Репутация: +  -2  -
Профиль   Отправить e-mail  

Элегантно сделать

Нет, выражение короткое, просто копипаст кода есть однозначно бэд.



Офлайн

#8 Янв. 9, 2011 17:07:17

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Элегантно сделать

Обычно так сломается что повторять уже не приходится. goto помогает в любом случае :)



Офлайн

#9 Янв. 9, 2011 17:10:00

asilyator
От:
Зарегистрирован: 2010-10-24
Сообщения: 276
Репутация: +  -2  -
Профиль   Отправить e-mail  

Элегантно сделать

Готу вроде некошерный?

Алсо мне надо, чтобы fix_error() выполнялся максимум один раз, а то так в бесконечный цикл уйти можно.

Что-то вроде

try:
expr
except Error:
fix_Error()
redo expr



Отредактировано (Янв. 9, 2011 17:13:07)

Офлайн

#10 Янв. 9, 2011 17:19:48

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Элегантно сделать

Может вы поконкретнее напишете что у вас за исключение возникает. А то так не очень понятно получается



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version