matlab
ロードおよび保存機能を模倣しようとしています。私はこのスレッドに従っています: Shelve Code gets KeyError
スマートです。ただし、そのコードを別のモジュールに記述し、そのモジュールをインポートしてその関数を呼び出そうとすると、グローバル変数にアクセスできません。
具体的には、私は書いてhappy.py
、内部に関数を持っています:
def save(filename='tmp', globals_=None):
if globals_ is None:
globals_ = globals()
globals()
import shelve
my_shelf = shelve.open(filename, 'n')
for key, value in globals_.items():
if not key.startswith('__'):
try:
my_shelf[key] = value
except Exception:
print('ERROR shelving: "%s"' % key)
else:
print('shelved: "%s"' % key)
my_shelf.close()
def load(filename='tmp', globals_=None):
import shelve
my_shelf = shelve.open(filename)
for key in my_shelf:
globals()[key] = my_shelf[key]
my_shelf.close()
そして試してみると
a = 1
b = 2
happy.save()
それはセーブa
とb
.
これはglobal()
、モジュールの外側にオブジェクトを渡さないからですか? その時やりたいことはどうすればいいの?