Python 捕获和返回函数作用域 问题:

Python 捕获和返回函数作用域 问题:,python,scope,Python,Scope,如何使函数自动返回其范围内定义的所有变量 动机 在科学工作中使用Python时,我的脚本倾向于非常线性(类似于算法),但相当长。当与脚本交互工作时,我希望保留计算的变量,以便进一步探索或使用它们 我可以跳过在脚本中使用main()函数,全局执行所有操作。但是,这将禁止以下示例中的行为,并禁止我在执行之前从交互式python控制台修改脚本 例子 内部script.py: def main(c): a, b = 1, 2 # long function body with lots

如何使函数自动返回其范围内定义的所有变量

动机 在科学工作中使用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()
捕获函数作用域并将其作为dict、list、

思想
给出
名称错误:名称“a”未定义

写下此问题后,我找到了答案:

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

def main(c):
    a, b = 1, 2
    # long function body with lots of variables...
    return locals()