Python自动导入

Nod*_*ren 17 python

可能重复:
Python中的Perl的AUTOLOAD(模块上的getattr)

我来自PHP背景并尝试学习Python,我希望确保以"Python方式"而不是之前的方式开发.

我的问题来自PHP5中您可以设置代码的事实,因此如果您尝试调用命名空间中不存在的类,则首先会运行一个函数,该函数将加载该类并允许您继续运行,就像它已经装好了.这样做的好处是除非调用类,否则不会加载类,并且在使用类之前不必担心加载类.

在python中,有很多强调import语句,用python尝试自动导入技巧是不好的做法,以减少对import语句的需求?我发现这个模块提供自动导入,但是我不知道这是否是最好的方法,或者如果推荐模块的自动导入,想法?

dcr*_*sta 13

除了使模块的模块或内容可用之外,Imports至少还有两个重要目的:

  1. 它们用作一种意图声明 - "此模块使用来自此其他模块的服务"或"此模块使用属于某个类的服务" - 例如,如果您正在对套接字处理代码进行安全性审查,则可以从只查看导入的模块socket(或其他网络相关模块)开始
  2. 导入用作模块复杂性的代理.如果您发现自己有数十种进口线,那么可能是时候重新考虑您在模块内或整个应用程序中的问题分离.这也是避免" from foo import *"类型导入的一个很好的理由.


Mar*_*wis 10

在Python中,人们通常会避免自动导入,因为它不值得付出努力.您可能会略微删除启动成本,但除此之外,没有(或应该没有)显着影响.如果你有导入​​昂贵的模块并做很多不需要做的事情,那么重写模块比延迟导入它.

也就是说,汽车进口没有任何内在错误.由于代理性质,可能存在一些缺陷(例如,当查看尚未导入的东西时).几个自动导入库浮动.