关于Python名称空间和函数导入的问题:只从模块中导入所需的函数是否更可取?

2ul0zpep  于 2023-01-27  发布在  Python
关注(0)|答案(1)|浏览(98)

所以我不记得我在哪里听到或读到过这句话,但我记得有人告诉我,出于几个原因,最好只从模块中导入所需的函数或类。
我们应该这么做

from my_module import (needed_function, NeededClass)
from numpy import (arange, nditer, ones, zeros, array ndarray)

needed_function()
NeededClass()

ones
arange(0,16).reshape(4,4)
#etc etc

而不是导入模块并调用所需的函数

import my_module as mm
import numpy as np

mm.needed_function()
mm.NeededClass()

np.ones
np.arange(0,16).reshape(4,4)
#etc etc

我被告知,主要原因是当调用module.function时,Python必须在本地名称空间中搜索module,然后在模块的名称空间中搜索function,然后继续,每次调用module.function时都必须这样做,这可能非常浪费时间(对于大型计算)。
这与直接导入函数形成了对比,因为这样python只需要在本地名称空间中搜索一次该函数,这比搜索一个可能非常大的名称空间(如numpy或scipy)要简单得多。
是这样吗?

kpbwa7wx

kpbwa7wx1#

一些好的答案:https://softwareengineering.stackexchange.com/questions/187403/import-module-vs-from-module-import-function
就我个人而言,我创建的.exe文件需要具有很强的可移植性,并且文件大小尽可能小,因此,我通常只导入单个函数。

相关问题