Python 我是否可以强制“import mymodule”只导入定义和类,而不导入前几行中导入的模块(依赖项)?
我是python的初学者,已经编写了一个类似以下内容的模块:Python 我是否可以强制“import mymodule”只导入定义和类,而不导入前几行中导入的模块(依赖项)?,python,python-3.x,import,module,scope,Python,Python 3.x,Import,Module,Scope,我是python的初学者,已经编写了一个类似以下内容的模块: # filename: mymodule.py import numpy as np from datetime import datetime def a(): ...<stuff>... def b(): ...<stuff>... #文件名:mymodule.py 将numpy作为np导入 从日期时间导入日期时间 定义a(): ...... def b(): ...... 通常(与PEP8
# filename: mymodule.py
import numpy as np
from datetime import datetime
def a():
...<stuff>...
def b():
...<stuff>...
#文件名:mymodule.py
将numpy作为np导入
从日期时间导入日期时间
定义a():
......
def b():
......
通常(与PEP8一致)的共识似乎是导入语句应该位于文件头。然而,现在当我导入mymodule时,运行dir(mymodule)
显示对象np
和datetime
是mymodule
的一部分,这看起来效率低下且“草率”。似乎只保留类和def的一种方法是通过对globals()
的动态迭代进行某种条件删除(在尝试了一段时间后,似乎真的很难实现),或者在所有内容上都使用del
关键字
主要问题:我可以这样做吗?我可以动态地而不是显式地这样做吗?无论标头模块是否是导入的一部分,defs是否独立工作?否则导入的
每次都会崩溃,我想。为什么你认为拥有其他模块效率低下?这不是有点混乱吗?我想这是我的主要抱怨。我的意思是,假设我在一些python脚本中将mymodule导入为我的;将numpy作为np导入
。现在有两个numpy
副本占用内存--numpy
和mymodule.np
。虽然我认为这是一个非常小的空间,不。numpy
和mymodule.np
都引用了sys.modules
中的相同条目。我忘了我什么都不知道。谢谢。@DanielRoseman那么,让外部模块引用传播到单独导入的模块中,这是公认的做法吗?在我看来,这不是“正确的方法”,因为导入标准库,如sys
,os
,和numpy
,表明dir(np)
,dir(os)
,等等中没有外来模块名。对于任何具有大量类和def
的文件,这可能是有效的,总是在\uuu init\uuuu.py
文件中使用x import y
中的name explicit?为什么您认为使用其他模块效率低下?这不是有点混乱吗?我想这是我的主要抱怨。我的意思是,假设我在一些python脚本中将mymodule导入为我的;将numpy作为np导入
。现在有两个numpy
副本占用内存--numpy
和mymodule.np
。虽然我认为这是一个非常小的空间,不。numpy
和mymodule.np
都引用了sys.modules
中的相同条目。我忘了我什么都不知道。谢谢。@DanielRoseman那么,让外部模块引用传播到单独导入的模块中,这是公认的做法吗?在我看来,这不是“正确的方法”,因为导入标准库,如sys
,os
,和numpy
,表明dir(np)
,dir(os)
,等等中没有外来模块名。对于任何具有大量类和def
的文件,这可能是有效的,是否始终在\uuuu init\uuuuuuuuuuy.py
文件中使用来自x导入y的显式名称?