我正在尝试模仿matlab
加载和保存功能。我正在关注这个线程:搁置代码给出了 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()
不会给模块外的对象吗?那我该怎么做我想做的事呢?