我想检查我的函数没有副作用,或只影响精确变量的副作用。 有没有检查它实际上有没有副作用(或副作用只有某些变量)的功能?
如果没有,我怎么能去写我自己的,如下所示:
我的想法是这样的,初始化,测试调用该函数,然后调用最后一个方法:
class test_side_effects(parents_scope, exclude_variables=[]):
def __init__():
for variable_name, variable_initial in parents_scope.items():
if variable_name not in exclude_variables:
setattr(self, "test_"+variable_name, variable_initial)
def final(self, final_parents_scope):
for variable_name, variable_final in final_parents_scope.items():
if variable_name[:5] is "test_" and variable_name not in exclude_variables:
assert getattr(self, "test_"+variable_name) is variable_final, "Unexpected side effect of %s from %s to %s" % (variable_name, variable_initial, variable_final)
#here parents_scope should be inputted as dict(globals(),**locals())
我不确定这是否是恰恰字典我想...
最后,我应该这样做呢? 如果不是,为什么不呢?