Pythonでは、環境変数を取得するためにos.getenv
とos.environ.get
の2つの関数がよく使われます。これらの関数はどちらも同じ目的を果たしますが、それぞれには微妙な違いがあります。
os.getenvの仕様
os.getenv
は、環境変数key
が存在すればその値を返し、存在しなければdefault
を返します。key
、default
、および返り値は文字列です。もし環境変数がなくともKeyError
がraiseされず、第二引数(キーワード引数)のdefault
の値が返ります(指定しなければNone
が返ります)。
os.environ.getの仕様
os.environ.get
は、os.environ
が文字列の環境を表すマップ型オブジェクトであるため、get
メソッドを使うことができます。get
メソッドの仕様はkey
が辞書にあればkey
に対する値を、そうでなければdefault
を返します。default
が与えられなかった場合、デフォルトではNone
となります。そのため、このメソッドはKeyError
を送出することはありません。
os.getenvとos.environ.getの違い
os.getenv
とos.environ.get
は同様の動作であることが分かります。os.environ.get('ENV_VAL')
とos.environ['ENV_VAL']
の違いは、KeyError
をraiseするか否かです。
os.getenv
はos.environ.get
のエイリアスであり、メモリや実行速度の比較をする必要もないと思います。公式でもどちらを推奨という話はありませんので、お好みでお使いください。