繁体   English   中英

使导入的模块中的函数变量在iPython交互式名称空间中可用

[英]Making function variables from imported module available in iPython interactive namespace

我想知道如何从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,而不是导入它并调用该函数。

任何指针表示赞赏。

我相信可以通过返回locals然后更新本地人来实现。

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

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

这似乎可行,尽管感觉像是黑客,所以也许并非总是如此。

一个合理的示例,说明您希望在何处:如果要访问函数名称空间中的所有变量,但又不希望脚本的其他部分(例如,其他函数定义)访问该函数的变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM