Я использую блоки try/except
вместо блоков if/elif
, у которых есть куча блоков and
. Я просматриваю список и заменяю некоторые элементы, если в нем есть x, x, x и т. д. В моем проекте мне нужно проверить более 6 вещей, которые привлекли меня к использованию try/except
с .index()
, что приведет к ошибке, если элемент отсутствует.
Аналогия выглядит так:
colors = ['red', 'blue', 'yellow', 'orange']
try:
red_index = colors.index('red')
blue_index = colors.index('blue')
colors[red_index] = 'pink'
colors[blue_index] = 'light blue'
except ValueError:
pass
try:
yellow_index = colors.index('yellow')
purple_index = colors.index('purple')
colors[yellow_index] = 'amarillo'
colors[purple_index] = 'lavender'
except ValueError:
pass
Поэтому, если массив colors
не содержит 'purple'
, а также 'yellow'
, я не хочу, чтобы массив менялся.
Я немного настороженно отношусь к этому подходу, потому что это похоже на злоупотребление try/except
. Но это намного короче, чем альтернатива, потому что мне все равно пришлось бы хватать элементы index
, поэтому я хотел бы знать, есть ли с этим вопиющие проблемы или это достаточно безумно, чтобы другие разработчики ненавидели меня за это.
if ('red' in colors and 'blue' in colors):
вместоtry:
должно иметь все необходимое. - person Alea Kootz   schedule 30.09.2015