В целом, структура не так уж плоха (при условии, что вам нужно вызвать modify
на 1 + элементах в настройках - если «только один», т. Е. Если флаг is_what_I_want
будет установлен максимум на один параметр, который, конечно, отличается, так как вы можете и должны использовать break
из цикла for
- но это не то впечатление о ваших намерениях, которое я получаю от вашего Q, пожалуйстауточнить, если я ошибся!).Существует одна избыточность:
for i, foo in enumerate(thing_structure.settings):
if foo.is_what_I_want:
modify(thing_structure.settings[i])
found_thing = True
Наличие i
и использование его для получения того же foo
здесь бесполезно, поэтому вы можете упростить до:
for foo in thing_structure.settings:
if foo.is_what_I_want:
modify(foo)
found_thing = True
You 'Индекс понадобился бы только в том случае, если вы повторно связали элемент, т.е. выполнили присваивание, например thing_structure.settings = whatever
.(Кстати, имя, отличное от foo
, не повредит; -).