以下是我在评论中提出的具体实现:
#File temp.py
var1 = 1
var2 = 2
if __name__ == '__main__':
print var1+var2
我通过另一个文件run.py调用它.关键是让另一个像类这样的dict不受模块在导入/运行它时可能改变的变量的任何变化的影响.此字典包含要更改其值的变量.
#File: run.py
class UpdatedDict(dict):
def __setitem__(self, key, value):
if key != "var1":
super(UpdatedDict, self).__setitem__(key, value)
u = UpdatedDict({"var1": 10, '__name__': '__main__'})
exec open("temp.py").read() in u #u here is the globals() for the module.
产量
~/Temp$python run.py
12 #Yay!
注意:这是一个快速而肮脏的实现,只是为了向您展示您可以这样做的方式.我建议通过runpy并使这段代码看起来更健壮.它现在的方式,它是一个正确的hackish定义