Python 自动导入
可能重复的问题:
Python中的Perl的AUTOLOAD(模块上的getattr)
我之前是做PHP的,现在想学Python,我希望能按照“Python的方式”来做,而不是沿用我以前的开发习惯。
我的问题是,在PHP5中,你可以设置代码,这样如果你尝试调用一个在命名空间中不存在的类,系统会先运行一个函数来加载这个类,然后你就可以像它已经被加载了一样继续使用。这种做法的好处是,只有在需要的时候才会加载类,你也不用担心在使用之前先加载类。
在Python中,导入语句非常重要。那么,尝试用自动导入的方式来替代导入语句,是不是不太好呢?我找到过这个模块,它提供了自动导入的功能,但我不知道这样做是否是最好的方法,或者自动导入模块是否被推荐,大家怎么看?
4 个回答
1
你可以自动导入模块,但我用过的最多也就大约10个模块,这还是在我给原来的程序添加了新功能之后。其实你用到的模块不多,而且它们的名字很容易记住。
11
在Python中,人们通常不太使用自动导入功能,因为这样做并不值得。虽然你可能会稍微减少启动时的开销,但除此之外,基本上没有什么显著的影响。如果你有一些导入成本很高的模块,而且它们做了很多其实不需要做的事情,倒不如重新编写这个模块,而不是拖延导入的时间。
不过,自动导入本身并没有什么问题。由于它的代理特性,可能会有一些陷阱,比如在查看一个还没有被导入的东西时可能会出错。目前有好几个自动导入的库在使用。
15
导入(Imports)除了让我们可以使用其他模块或模块里的内容,还有至少两个重要的作用:
- 它们可以看作是一种意图声明——比如“这个模块使用了另一个模块的服务”或者“这个模块使用了某个类的服务”。举个例子,如果你在做一个关于socket处理代码的安全审查,你可以先只关注那些导入了
socket
(或者其他网络相关模块)的模块。 - 导入也反映了模块的复杂性。如果你发现自己有很多行的导入语句,那可能是时候考虑一下模块内部的职责划分,或者整个应用的结构了。这也是一个很好的理由去避免使用像
from foo import *
这样的导入方式。