Pythonにいくつかの変数またはオブジェクトがあるとしましょうa
、、、、b
.. c
..
これらの変数をPythonの名前空間に簡単にダンプし、後で復元するにはどうすればよいですか?(たとえば、同じ方法でargparse
さまざまな変数を名前空間にラップします)。
名前空間との間で物事をダンプする方法の2つの例を次に示します。
ローカル変数を名前空間にダンプする
function (bar):
# We start with a, b and c
a = 10
b = 20
c = "hello world"
# We can dump anything we want into e, by just passing things as arguments:
e = dump_into_namespace(a, b, c)
del a, b, c
print (e.a + e.b) # Prints 30
return e # We can return e if we want. This is just a use case scenario
名前空間からのローカル変数のダンプe
# We start with e, which for example was built with a call to
# dump_into_namespace(a,b,c) somewhere else in the program,
# in which case e would hold a, b and c
# We may receive e through a function call or load it from disk, e.g.:
function foo(e):
# The following call creates the variables a,b and c
# or updates their values if the already exist in memory
dump_from_namespace(e)
del e
print(a + b) # Prints 30
print(c) # Prints hello world
私の最初の質問は:これはPythonでまったく可能ですか?dump_into_namespace
(少なくとも私が知る限り、メソッドは変数の名前を直接受け取らないことに注意してください)。
上記の答えが「いいえ」の場合、このようなインターフェースでどのように行うことができますか?
e = dump_into_namespace('a', 'b', 'c')
また、名前空間の代わりに辞書を使用してこれをどのように行うのでしょうか?
動的に定義された変数のドットアクセスに対処することに関連すると思われるスレッドがいくつかありますが、変数のダンプの問題に対処しているとは思いません。
も参照してください
- Python:名前空間から変数を抽出する
- 現在の名前空間にダンプ可能なPicklableデータコンテナ
- 再帰的なDotDict
- ドット「。」の使い方 辞書のメンバーにアクセスするには?
- unpythonicの辞書キーのJavascriptスタイルのドット表記?
- 属性のようなdictキーにアクセスしますか?
- インデックスアクセスだけでなく、属性を介してdictに再帰的にアクセスしますか?
- Python:深くネストされたdictに簡単にアクセス(取得および設定)
- このPythonパターンに「落とし穴」はありますか?
ドット表記を介してこのタイプのアクセスを容易にするライブラリはありますか?
アップデート:
Pythonでドットアクセス可能な辞書をサポートするBunchというライブラリがあるようですが、定義したとおり、簡単にダンプできるかどうかはわかりません。