私は頻繁に、以下のスタイルで繰り返し感のあるコードを書いていることに気付きます (たまたま、 Django の内部settings.py
ですが、質問はより一般的に意味されています)。
STACKEXCHANGE_CLIENT_ID = os.getenv('STACKEXCHANGE_CLIENT_ID')
STACKEXCHANGE_CLIENT_SECRET = os.getenv('STACKEXCHANGE_CLIENT_SECRET')
# et cetera
当然、ローカル変数の名前を環境変数の名前と一致させたくない場合がたくさんありますが、名前の重複を避ける良い方法があるかどうか疑問に思っているほど十分に起こっています。
以下のコードは私のために働きます:
_locals = locals()
def f(x):
_locals[x] = os.getenv(x)
f('TERM')
print TERM
しかし、次のPythonドキュメントlocals()
を引用するため、これを本番環境で使用するつもりはありません。
注:このディクショナリの内容は変更しないでください。
有効な「サポートされている」/「承認された」ソリューションが存在するかどうか疑問に思っています。もしそうなら、それはどのように見えるでしょうか?