31

PythonのConfigParserを使用して構成ファイルを作成しています。セクションに特定のオプションが定義されているかどうかを確認し、定義されている場合は値を取得します。オプションが定義されていない場合は、特別な動作をせずに続行したいと思います。これを行うには2つの方法があるようです。

if config.has_option('Options', 'myoption'):
    OPTION = config.get('Options', 'myoption')

または:

try:
    OPTION = config.get('Options', 'myoption')
except ConfigParser.NoOptionError:
    pass

ある方法が他の方法よりも優先されますか?に含まれる行は少なくなりますが、多くの場合、 /はよりPythonicであると見なさifれることを時々読んでいます。tryexcept

4

1 に答える 1

28

try/exceptとif-conditionの間の選択はあいまいな線です。

  1. 例外が非常にまれであると予想される場合は、思考をより厳密にモデル化するため、try/exceptを使用してください
  2. 逆に、構成アイテムが欠落しているなどの「予期される」例外は、通常の制御フローの一部であり、コードはそれを反映する必要があります。

明らかに優れた選択肢はありませんが、(2)のケースがあるように思われるので、if/thenを選択します。これは、許可よりも許しを求めるのが簡単な側面と構造の相対的な効率を完全に無視します。

于 2012-07-17T17:52:11.643 に答える