import 是Python中用于导入模块(包括标准库、第三方库和自定义模块)的关键字。导入模块使得你可以在你的代码中使用模块中定义的函数、类、变量和其他功能,下面是关于import函数用法的详细解释。
你可以使用import module_name来导入一个完整的模块,然后在你的代码中通过模块名来访问其中的内容。
import math # 此处math为module_name
print(math.sqrt(25)) # 使用math模块中的sqrt函数计算平方根
#输出结果为5.0
你还可以通过使用逗号同时导入多个包,例如:
#同时导入os和sys包
import os,sys # 模块间用逗号隔开,可以引用多个
有时候你可能只想导入模块中的特定函数、类或变量,而不是导入整个模块。你可以使用from module_name import item_name来实现这个目标。
from math import sqrt # 此处math为module_name,sqrt为item_name
print(sqrt(25)) # 直接使用sqrt函数,不需要使用模块名前缀
#输出结果为5.0
通过使用 from module_name import * ,你可以导入模块中的所有公共内容。然而,这种做法在大型项目中不太推荐,因为它可能导致命名冲突或不清晰的代码。
from math import *
print(sqrt(25)) # 直接使用sqrt函数,不需要使用模块名前缀
#输出结果为5.0
你可以为导入的模块或库起一个别名,以缩短代码并提高可读性,例如我们一般把TensorFlow命名为tf,把numpy命名为np。
import numpy as np
array = np.array([1, 2, 3, 4])
print(array)
#输出结果为[1 2 3 4]
你也可以导入自己编写的模块,只需确保模块在Python路径中可找到。
from mymodule import my_function
result = my_function()
绝对导入(Absolute Import)和相对导入(Relative Import)是Python中用于导入模块的两种不同方式。它们主要用于确定你希望从哪个位置开始查找和导入模块。让我们详细解释一下这两种导入方式:
绝对导入是从项目的根目录或顶层包开始的导入方式。这意味着你要指定完整的包路径来导入模块,不论你当前的工作目录是什么。绝对导入方式在确保导入路径的明确性方面非常有用,特别是在较大的项目中。
例如,如果有一个项目结构如下:
my_project/
├── main.py
└── my_package/
├── __init__.py
├── module1.py
└── module2.py
你可以使用绝对导入在 module2.py 中导入 module1.py,如下所示:
# module2.py
from my_package import module1
相对导入是从当前模块所在位置出发的导入方式。使用相对导入时,你可以使用点 . 来表示当前模块的位置,然后指定相对于当前模块的导入路径。
在相对导入中,有两种不同的方式:隐式相对导入和显式相对导入。
我们仍然按照上面的项目结构进行介绍。
my_project/
├── main.py
└── my_package/
├── __init__.py
├── module1.py
└── module2.py
隐式相对导入:使用单个点 . 表示从当前文件夹中导入模块。
在 module2.py 中导入 module1.py:
# module2.py
from . import module1#从my_package文件夹中导入module1
显式相对导入:使用多个点 … 表示向上一级包中导入模块。
在 module2.py 中导入 module1.py:
# module2.py
from ..my_package import module1
#..是my_project文件夹,..my_package则是my_project文件夹下的my_package文件夹
总结来说,绝对导入从项目的根目录或顶层包开始导入模块,而相对导入从当前模块所在位置出发,根据模块的相对关系来导入其他模块。在选择导入方式时,你可以根据项目的结构和需要来决定哪种方式更适合你的情况。
从文件夹中导入 module和从 module中导入函数,两者代码格式是非常相似的,注意区分
from folder_name import module_name # 从文件夹中导入module
from module_name import my_functions # 从module中导入某个函数
在Python中,当你使用import语句导入模块时,导入的顺序通常是按照以下规则进行的:
首先,Python会搜索当前工作目录下是否存在要导入的模块文件。
如果在当前工作目录中找不到该模块,Python会搜索已安装的标准库和第三方库。
如果在标准库和第三方库中找不到该模块,Python会引发ModuleNotFoundError异常,表示未找到该模块。
需要注意的是,Python中的导入是一种延迟加载(lazy load)机制,即在首次导入模块时才会执行模块中的代码。此外,一旦一个模块被导入,它会被缓存,以便在后续导入中重用,从而避免重复加载和执行。
另外,如果你在代码中使用了绝对路径导入(例如from package.subpackage import module),Python会按照从最外层包到最内层子包的顺序进行导入。这有助于确保导入顺序的一致性,避免循环导入问题。
总之,导入模块的顺序是先在当前工作目录和已安装的库中搜索,然后按照包层次结构进行导入。