在 Python 中,使用 import
语句可以将其他 Python 模块或包中的代码引入到当前模块中,以供使用。通常情况下,我们可以使用以下语法将整个模块导入到当前命名空间中:
import module_name
其中,module_name
是要导入的模块的名称。通过这种方式导入模块后,可以使用点号运算符 .
来访问该模块中的各个属性、函数、类等。
例如,假设我们有一个名为 module_name.py
的模块,其中定义了一个名为 foo()
的函数和一个名为 bar
的变量,那么我们可以使用以下代码将其导入到另一个模块中:
import module_name
module_name.foo()
print(module_name.bar)
除了上面的方式外,Python 还提供了另一种常用的导入方式,即使用 from
关键字来导入模块中的特定部分。这种方式可以使我们更加灵活地控制导入的内容,避免命名空间污染。
使用 from
语句的语法为:
from module_name import name1, name2, ...
其中,module_name
是要导入的模块的名称,name1
, name2
, ... 是模块中要导入的特定名称。这些名称可以是模块中定义的函数、变量、类、子模块等等。
例如,如果我们只需要使用 module_name
模块中的 foo()
函数,可以使用以下代码:
from module_name import foo
foo()
此外,还可以使用 as
关键字来给导入的名称设置别名,例如:
from module_name import foo as my_function
my_function()
需要注意的是,使用 from
导入方式时,被导入的名称将被直接放入当前命名空间中,而不需要通过点号运算符来访问。这样可能会导致命名空间的混乱和名称冲突,因此建议根据实际情况合理使用 import
和 from import
。
在 Python 中,如果要导入同一个文件夹下的包,可以使用相对导入(Relative Import)。
相对导入的语法是以 .
或 ..
开头的模块名,它们分别表示当前模块所在的*包*或*父包*。
假设你的目录结构如下:
a/
├── b/
│ └── b_module.py
└── c/
├── c_module.py
└── d/
├── d_module.py
└── e/
└── e_module.py
要在 b 中导入 e 包,可以使用以下语句:
from ..c import d
from ..c.d import e
上述语句中,..
表示从当前包(即 b 包)的父包 a 中查找,然后 from ..c import d
表示从 a 中的 c 包导入 d 包,from ..c.d import e
表示从 d 包中导入 e 包。注意,相对导入语句中的 ..
表示当前包的父包,因此在 b 包中使用 ..
表示 a 包。