Python ConfigParser: проверка наличия опции
Я использую Python ConfigParser для создания файла конфигурации. Я хочу проверить, определен ли раздел определенной опцией, и, если да, получите значение. Если опция не определена, я просто хочу продолжать без какого-либо особого поведения. Кажется, есть два способа сделать это.
if config.has_option('Options', 'myoption'):
OPTION = config.get('Options', 'myoption')
Или:
try:
OPTION = config.get('Options', 'myoption')
except ConfigParser.NoOptionError:
pass
Один метод предпочтительнее другого? if
содержит меньше строк, но я иногда читал, что try
/except
во многих случаях считается более pythonic.
Ответы
Ответ 1
Выбор между try/except и if-condition является нечеткой линией.
- Если вы ожидаете, что исключение будет довольно редким, используйте try/except, поскольку он более тесно моделирует мышление
- И наоборот, "ожидаемые" исключения, такие как отсутствующий элемент конфигурации, являются частью нормального потока управления, и код должен отражать это.
Нет четкого превосходного выбора, но похоже, что у вас есть случай (2), поэтому я бы выбрал if/then. Это полностью игнорирует аспекты Легче просить Прощение, Чем Разрешение и относительную эффективность структур.