问题:我是否需要在每个模块中导入这些模块?
依赖于它们的文件?即:我需要在两者中导入输出吗
类、命令和主要内容?
是的,这就是要走的路。
或者类、输出和命令都是导入的
into main 意味着它们不需要单独导入?
No.
Python 文件是模块。 python 模块有一个符号表。模块中指定的每个函数、类和变量都在此表中。模块只能使用此表中的内容以及 Python 内置函数。
例如classes.py
:
def function(): pass
class Class(object): pass
有符号表:
{
'function': function,
'Class': Class
}
您只能使用function
and Class
within classes.py
(加上提到的内置函数)。您无法隐式访问此模块之外的任何内容,Python 没有像 C# 和 Java 那样的任何命名空间概念。如果您需要不同文件(模块)中的任何内容,则必须显式导入它。
现在,当您“导入”时到底会发生什么?
非常简单的事情 - 导入的模块“成为”模块本身的一部分!
在下一个例子中我们有output.py
:
def output_function(): pass
带符号表:
{
'output_function': output_function
}
and classes.py
:
import output
from output import output_function
def function(): pass
class Class(object): pass
带符号表:
{
'Class': Class,
'function': function,
'output': {
'output_function': output_function
}
'output_function': output_function
}
其中“output”的值实际上是“output”的符号表(完全相同的对象)!
您甚至可以在不同的模块中执行以下操作:
import classes
classes.output.output_function()
但不要,明确您的进口。
这听起来可能有点奇怪,但这就是 Python 的工作原理。请注意,还涉及更多事情,例如当您第一次执行导入模块时等等......