关于这个问题:local-import-statements-in-python,在我提问时在这里引用:
我认为将 import 语句放置在使用它的片段附近,通过使其依赖关系更加清晰来提高可读性。Python会缓存这个吗?我应该关心吗?这是一个坏主意吗?
def Process(): import StringIO file_handle=StringIO.StringIO('hello world') #do more stuff for i in xrange(10): Process()
更多理由:它适用于使用库中神秘位的方法,但是当我将该方法重构到另一个文件中时,我没有意识到我错过了外部依赖项,直到出现运行时错误。
我想问以下问题:
- 在 .py 文件顶部导入模块和从函数定义内部导入模块之间的真正区别最终是什么?
例如,我个人遇到了一个模块的特殊问题,win32com.client
当我在文件顶部导入模块时,我的脚本崩溃了,但奇怪的是,在我从依次调用的函数中调用 import 语句后,它似乎可以正常执行它的方法之一。
有关这方面的更多信息,请参阅我的另一篇文章:如何在 Python 中的单独线程中启动 win32 应用程序。
我怀疑这种行为与 locals() 和 globals() 在某些情况下被不同地更新或根本不更新有关......请赐教。