Python 3のスコープ内で変数を保存/復元する簡単な方法はありますか?例えばPython 3で変数を保存/復元する一般的な方法
:
x=4
with x=5:
... do something with x that's temporarily 5
または
with os.environ["FOO"] = "BAR":
... do something here
それはこれを実装するPythonインタプリタのための超簡単になるように思え割り当ての左側が保存されている(、右側があります__enter__
で実行、__exit__
に復元)
または少なくともいくつかのライブラリなどです。
これを一時変数で実行するには、try/finallyブロックが必要であり、本質的に安全でなく、ランタイムエラーが発生しがちです。これは、比較すると「不快」と思われる。
try:
save = os.environ["FOO"]
os.environ["FOO"] = "BAR"
... do something here
finally:
os.environ["FOO"] = save
なぜ、このようにそれを行いますか? unpythonicと思われ、コードの可読性が低下します。なぜ一時変数を使用しないのですか? – ubadub
なぜ機能ではないのですか?とにかく、よりメンテナンス可能なコードを作成します。 – deceze
上記の両方の質問に回答し、提案された構文がはるかに「pythonic」である理由を説明しました。読みやすく、バグの原因になりません。また、多くの場合、「機能」は利用できません。 (ENVの修正は標準的な例ですが、他にもたくさんあります) –