Подтвердить что ты не робот

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.

4b9b3361

Ответ 1

Выбор между try/except и if-condition является нечеткой линией.

  • Если вы ожидаете, что исключение будет довольно редким, используйте try/except, поскольку он более тесно моделирует мышление
  • И наоборот, "ожидаемые" исключения, такие как отсутствующий элемент конфигурации, являются частью нормального потока управления, и код должен отражать это.

Нет четкого превосходного выбора, но похоже, что у вас есть случай (2), поэтому я бы выбрал if/then. Это полностью игнорирует аспекты Легче просить Прощение, Чем Разрешение и относительную эффективность структур.