如何自动化函数以返回其范围内定义的所有变量?
当使用Python进行科学工作时,我的脚本往往非常线性(类似算法)但很长。当与脚本交互式工作时,我想保留计算的变量以进一步探索或使用它们。
我可以跳过在脚本中使用main()
函数并在全局范围内执行所有操作。但是,这将禁止像下面示例中的行为,并禁止我在执行之前从交互式python控制台修改脚本。
内部script.py
:
def main(c):
a, b = 1, 2
# long function body with lots of variables...
return parse_scope()
在交互式控制台中:
>>> import script
>>> script.main(c=3)
{'a': 1, 'b': 2, 'c': 3}
parse_scope()
捕获函数范围并将其作为字典,列表返回......
def main(c):
a, b = 1, 2
# long function body with lots of variables...
return {name: eval(name) for name in dir()}
提供NameError: name 'a' is not defined
。
答案 0 :(得分:0)
写完这个问题后,我找到了答案:
def main(c):
a, b = 1, 2
# long function body with lots of variables...
return locals()
似乎可以解决问题。
我之前的示例不起作用,因为eval(expression, globals=None, locals=None)
需要为a
,b
,c
提供范围。