Python 在「;从包装进口*”;及;“进口包装”;

Python 在「;从包装进口*”;及;“进口包装”;,python,performance,python-import,Python,Performance,Python Import,从软件包导入的与导入软件包的之间是否存在性能差异*?不,差异不是性能问题。在这两种情况下,必须解析整个模块,并执行任何模块级代码。唯一的区别在于名称空间:首先,导入模块中的所有名称都将成为当前模块中的名称;在第二个模块中,当前模块中只定义包名 也就是说,很少有好的理由使用foo import*中的。要么导入模块,要么从中导入特定名称。是的,谢谢您的回答。我认为当包名可能更改时,使用“from package import*”也有一些原因。或者有另一个具有相同功能的包将替换原始包,从而导致需求更改

从软件包导入的
与导入软件包的
之间是否存在性能差异*

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


也就是说,很少有好的理由使用foo import*
中的
。要么导入模块,要么从中导入特定名称。

是的,谢谢您的回答。我认为当包名可能更改时,使用“from package import*”也有一些原因。或者有另一个具有相同功能的包将替换原始包,从而导致需求更改。当您实际使用
包时,所有属性查找
package.foo
可能会累积性能差异。不过,如果这是一个问题,请导入特定名称或缓存本地查找的名称。当包更改名称时,您只需
将newname导入为oldname
。如果经常切换包有危险,请立即将包作为interfacename导入。同意,来自foo import*
不应用于前向兼容性。@PavelAnossov您的意思是像
将垃圾邮件导入sp
然后
缓存的\u方法=sp.foo