在 Python 中,
import
语句是一个关键的功能,用于在程序中引入模块和包。本文将深入讨论import
语句的各种用法、注意事项以及一些高级技巧,以帮助你更好地理解和使用这一功能。
通常对应一个文件夹,下面可以有subpackage
和module
,通常有__init__.py
(,python3以下版本一定有,python3中不一定)
如果
__init__.py
存在,package
导入时,会先执行一次__init__.py
通常对应一个 .py
文件
最简单的 import
用法是引入整个模块:
import module_name
这样,你就可以使用 module_name
中定义的函数、类等。例如:
module_name.function_name()
有时候,模块的名称可能较长,为了方便使用,可以为模块取一个别名:
import module_name as alias
这样,可以用 alias
代替 module_name
:
alias.function_name()
示例
import module1 as m1
import package1.module1 as m1
from package1.module1 import object1 as o1
导入module1重命名为m1
从package1导入module1重命名为m1
从package1导入module1的object1命名为o1
如果你只需要使用模块中的某些函数或类,可以通过 from ... import ...
语句:
from module_name import function_name
现在,你可以直接使用 function_name()
而不用写模块名。
示例
from module1 import object1
从module1导入对象object1
如果你的代码组织成了包,你也可以使用 import
来导入包和包中的模块。
import package_name
或者:
from package_name import module_name
在导入自己写的模块时,确保模块所在的目录在 Python 解释器的搜索路径中。你可以通过以下方法之一来实现:
sys.path
中。PYTHONPATH
环境变量。有时候,你可能需要在运行时动态地导入模块。可以使用 importlib
模块来实现:
import importlib
module = importlib.import_module('module_name')
虽然不推荐,但有时候你可能想导入模块中的所有内容。可以使用 from ... import *
:
from module_name import *
这样做可能导致命名空间污染,不利于代码的维护和可读性。
在Python中,相对导入使用的是点号
.
来表示相对路径。
加粗样式
如果 main.py
想要导入 main2.py
,可以使用相对路径 .
表示同一级目录。
假设你的目录结构如下:
D:
│ main.py
│ main2.py
├─p1
│ │ m1 - 副本.py
│ │ m1.py
│ │
│ └─p11
│ m11.py
│
└─p2
m2 - 副本.py
m2.py
在 main.py
中,你可以使用以下方式导入 main2.py
:
# main.py
# 从同一级目录中导入main2模块
from . import main2
# 使用main2模块中的功能
main2.some_function()
如果 m2.py
想要导入 main.py
,可以使用相对路径 ..
表示上一级目录。
假设你的目录结构如下:
D:
│ main.py
│ main2.py
├─p1
│ │ m1 - 副本.py
│ │ m1.py
│ │
│ └─p11
│ m11.py
│
└─p2
m2 - 副本.py
m2.py
在 m2.py
中,你可以使用以下方式导入 main.py
:
# m2.py
# 从同上级目录中导入main模块
from .. import main
# 使用main模块中的功能
main.some_function()
如果 m11.py
想要导入 main.py
,这个时候以及越了2级,不再支持相对路径,这个时候就要使用软件包导入。
假设你的目录结构如下:
D:
│ __init__.py
│ main.py
│ main2.py
├─p1
│ │ m1 - 副本.py
│ │ m1.py
│ │
│ └─p11
│ m11.py
│
└─p2
m2 - 副本.py
m2.py
在main.py
的同目录下添加__init__.py
设置为软件包,这个时候,该目录被添加到子文件的环境变量里
在 m11.py
中,你可以使用以下方式导入 main.py
:
# m2.py
# 通过软件包导入main模块
import main
# 使用main模块中的功能
main.some_function()
熟练使用 import
,可以帮助你更好地组织和管理你的 Python 项目。你可以将代码模块化、组织成包,实现更好的代码复用和可维护性。希望本文对你深入了解和使用 import
语句提供了帮助。