我想知道如何从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而不是导入它并调用该函数。
任何指示赞赏。
答案 0 :(得分:0)
我相信这可以通过返回locals
然后更新本地人来完成。
def main():
# do things
return locals()
if __name__ == '__main__':
new_locals = main()
locals().update(new_locals)
这似乎有用,虽然它感觉像是一个黑客,所以也许它永远不会。
您想要的合理示例:如果您想要访问函数命名空间中的所有变量,但不希望脚本的其他部分可以访问该函数的变量(即其他功能定义)。