在iPython交互式命名空间中提供来自导入模块的函数变量

时间:2015-02-10 13:04:11

标签: python ipython

我想知道如何从IPython交互式命名空间中可用的导入模块中的函数创建变量。

我有一些示例代码,我想从另一个脚本运行,所以我将其设置为run_test.py:

def run_test():
    a = 5

if __name__ == "__main__":
    run_test()

我按如下方式导入模块并调用函数:

import run_test
run_test.run_test()

如何在交互式命名空间中使用变量'a'?我能做到的唯一方法是将'a'设为全局并直接运行run_test.py而不是导入它并调用该函数。

任何指示赞赏。

1 个答案:

答案 0 :(得分:0)

我相信这可以通过返回locals然后更新本地人来完成。

def main():
    # do things
    return locals()

if __name__ == '__main__':
    new_locals = main()
    locals().update(new_locals)

这似乎有用,虽然它感觉像是一个黑客,所以也许它永远不会。

您想要的合理示例:如果您想要访问函数命名空间中的所有变量,但不希望脚本的其他部分可以访问该函数的变量(即其他功能定义)。