【发布时间】:2019-05-13 08:03:59
【问题描述】:
这是一个非常基本的问题,但到目前为止我还没有看到任何涵盖所有可能情况的解释。
假设m1, m2, m3 是模块层次结构,fun() 是层次结构中的一个函数。
我见过类似的命令
版本 1
from m1.m2.m3 import fun fun() #To access the function版本 2
import m1 m1.m2.m3.fun()
它们是否完全等同于
版本 3
import m1.m2 m1.m2.m3.fun()
或
版本 4
from m1.m2 import m3 m3.fun()
或者两者之间的任何其他组合?有没有相对的优势或劣势?显然,我宁愿每次调用函数时都写fun(),而不是写m1.m2.m3.fun(),但有什么权衡呢?
据我了解,版本 2 将执行 m1 的整个脚本。但是其他人在执行时是否更有选择性(因此可能会更快地到达__main__?)
【问题讨论】:
-
很大程度上取决于您是否要使用软件包的其他部分。例如,如果您只想使用
fun(),那么您应该只导入它,而不是导入整个m1。 -
另一种选择是将
from .m2.m3 import fun添加到m1的__init__文件中,并将fun导入为from m1 import fun
标签: python function main python-module