模块导入与重载——使用笔记:导入与重载

未匹配的标注

因为一些原因,一旦人们发现如何使用 importreload 来运行文件,许多人便倾向于只关注这个方法且忘记了其他总是运行当前版本代码的启动选项(如,点击图标,IDLE 目录选项,和系统命令行)。然而,这个方法会很快导致困惑——你需要记住什么时候已经导入过,从而知道是否可以重载,当调用 reload时需要记住使用小括号,并且需要记住在一开始使用 reload 来获取当前版本代码来运行。而且,重载不会传递——重载一个模块只会重载那个模块,而不是它可能导入的任何模块——所以有时必须重载多个文件。

因为这些复杂性(和其他我们将稍后探索的,包括在本章前面的注意中简短提及的 reload/from 问题),暂时避免通过导入和重载来启动的诱惑通常是个好主意。比如,在下一节中描述的 IDLE 运行—>运行模块 目录选项就提供了一个更简单且更不容易出错的运行文件的方式,而且它总是运行代码的当前版本。系统shell命令行提供了类似的好处。如果使用这些其他的技术,你不需要使用 reload

另外,在本书的这个节点上如果用不寻常的方式使用模块可能会碰到麻烦。比如,如果想导入一个存储目录不在你当前工作目录的模块文件,将不得不直接跳到第22章并学习模块搜索路径。就目前而言,如果必须导入,尝试将所有文件放在当前工作目录来避免复杂性[8]。

也就是说,导入和重载已经被证明是Python类中的流行测试技术,且你也可能倾向使用这个方法。然而,和通常一样,如果你发现自己遇到了无法解决的困难,请停止继续前进!


[8] 如果你太好奇而不能等待,简单的说,Python在 sys.path(在 sys 模块中的 Python目录名字符串列表,它从 PYTHONPATH 环境变量初始化而来,再加上一组标准目录。如果你想导入一个不在你当前工作目录的目录,那个目录通常必须在 PYTHONPATH 设置中被列出。参见第22章和附录A获取更多细节)中列出的每个目录中搜索导入的模块。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~