Python 为什么我们有时需要导入module1.module2,但有时不需要?

Python 为什么我们有时需要导入module1.module2,但有时不需要?,python,python-3.x,import,Python,Python 3.x,Import,如果我们可以导入模块1,为什么我们需要导入模块1.module2 示例: 为什么我们需要导入tkinter.messagebox和导入tkinter.messagebox.askyesno(“blah text”),而我们也可以导入操作系统,但仍然可以操作系统路径.join(“/”,“blah”) 我经常在我的代码中使用import os,并且我在其他人的代码中看到了import tkinter.messagebox如果module1本身导入module2,您只能使用module1.module

如果我们可以导入模块1,为什么我们需要导入模块1.module2 示例:
为什么我们需要
导入tkinter.messagebox
导入tkinter.messagebox.askyesno(“blah text”)
,而我们也可以
导入操作系统
,但仍然可以
操作系统路径.join(“/”,“blah”)


我经常在我的代码中使用
import os
,并且我在其他人的代码中看到了
import tkinter.messagebox
如果
module1
本身导入
module2
,您只能使用
module1.module2
而不进行显式导入。例如,
os
在内部导入其他路径之一-处理模块(取决于操作系统)并调用它
path
。这个
path
只是
OS
模块中的一个变量,允许您访问
OS.path
模块。

这是一个基本原理。通常,当人们执行

import os
通常,它们使用属于
os.path
os
的方法,比如
os.path.abspath()
os.getcwd()
。因此导入
os
更有意义。如果您确信只使用
os.path
中的方法,您也可以
导入os.path
,这是非常好的

同样,如果您确定只使用
tkinter.messagebox
中的方法,您也可以这样做

import tkinter.messagebox

因为使用
import os.path
,您只导入“path”,而使用
import os
您可以导入
os
中的所有内容。与从foo导入栏导入的
与从foo导入的
相同的区别*
谢谢!现在更有意义了!