【问题标题】:Performance between "from package import *" and "import package"“from package import *”和“import package”之间的性能
【发布时间】:2013-03-27 09:14:46
【问题描述】:

from package import *import package 之间有性能差异吗?

【问题讨论】:

    标签: python performance python-import


    【解决方案1】:

    不,差异不是性能问题。在这两种情况下,都必须解析整个模块,并且将执行任何模块级代码。唯一的区别在于命名空间:首先,导入模块中的所有名称都将成为当前模块中的名称;第二种,在当前模块中只定义包名。

    也就是说,很少有充分的理由使用from foo import *。导入模块,或从中导入特定名称。

    【讨论】:

    • 是的,感谢您的回答。我认为当包名可能更改时,使用“from package import *”也是有原因的。或者有另一个具有相同功能的包将替换原来的包,导致需求发生变化。
    • 当您实际使用package 时,可能会从所有属性查找package.foo 中累积性能差异。不过,如果这是一个问题,请导入特定名称或缓存在本地查找的名称。
    • 当一个包改变名字时,你可以import newname as oldname。如果有经常换包的危险,马上import package as interfacename
    • 同意,from foo import * 不应用于向前兼容。
    • @PavelAnossov 你的意思是像import spam as sp 然后是cached_method = sp.foo
    猜你喜欢
    • 1970-01-01
    • 2016-08-12
    • 2015-03-10
    • 2010-11-18
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 2017-12-31
    • 2017-09-26
    相关资源
    最近更新 更多