是否有进口......来自..."?

时间:2014-12-02 11:58:25

标签: python python-import

我将编写(业余)代码,这比我之前使用的代码更加占用CPU和内存。我在其他代码中注意到有人赞成

import something
(...)
a = something.method()

from something import method
(...)
a = method()

使用一种风格与另一种风格是否具有性能优势?

PEP-0008 discusses imports但在阅读本文后,我的未经训练的眼睛看来,上述两种情况更多的是品味/风格。我更喜欢输入a = something.method()因为我会更好地理解我的代码。这就是说,如果这真的影响了性能,我会改变。

注意:问题不是个人偏好,而是两种导入样式的实际性能影响(或缺乏)。这方面很好地讨论in another question

1 个答案:

答案 0 :(得分:3)

性能的唯一区别是一个包含额外的属性查找:

a = something.method()

而其他人直接引用method

a = method()

由绑定名称时执行查找的from ... import ...语句抵消。这些操作之间的差异可忽略不计

导入实际上只是将名称绑定到已加载的对象。 Python如果尚未可用,则首次加载整个模块,但是如何绑定名称对加载的内容没有影响。

因此,这是一种风格选择。人们喜欢能够一目了然地确定物体来自何处。导入模块而不是模块中的对象为您提供了这种可视化参考。