【发布时间】:2014-02-05 03:23:41
【问题描述】:
关于这个问题: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 语句后,它似乎可以正常执行依次调用其方法之一的函数。
有关这方面的更多信息,请在此处查看我的其他帖子:How to launch win32 applications in separate threads in Python。
我怀疑这种行为与 locals() 和 globals() 在某些情况下被不同地更新或根本不更新有关...... 请赐教。
【问题讨论】:
-
请注意,在函数中不能使用
*导入。 (它们在旧版本的 python 中是允许的......)。其中一部分我认为没有其他大的区别。
标签: python import module globals locals