2026-08-18 04:31:49
在Python中,导入模块和包是组织代码、重用功能的基础操作。以下是详细的导入方法及注意事项:
一、导入模块模块通常是单个.py文件,也可为.pyo、.pyc、.pyd、.so、.dll等编译文件。
1. 基本导入import spam # 导入整个模块print(spam.a) # 访问模块变量spam.foo() # 调用模块函数c = spam.bar() # 使用模块类2. 多模块导入import socket, os, regex # 同时导入多个模块3. 别名导入import os as systemimport socket as netsystem.chdir("..") # 通过别名访问net.gethostname()4. 从模块导入特定对象from socket import gethostname # 导入指定对象到当前命名空间print(gethostname()) # 直接使用from socket import gethostname as hostname # 带别名导入h = hostname()5. 导入所有对象(慎用)from socket import * # 导入所有对象(不推荐)# 若模块定义了__all__,则只导入列表中的对象# foo.py__all__ = ['bar', 'spam']二、导入包包是包含__init__.py的目录,可包含子包和模块。
1. 包结构示例Graphics/ __init__.py Primitive/ __init__.py lines.py fill.py2. 导入方式# 方式1:全路径导入import Graphics.Primitive.fillGraphics.Primitive.fill.floodfill(img, x, y, color)# 方式2:部分导入from Graphics.Primitive import fillfill.floodfill(img, x, y, color)# 方式3:导入特定对象from Graphics.Primitive.fill import floodfillfloodfill(img, x, y, color)3. __init__.py的作用解释器按sys.path顺序查找模块:
import sysprint(sys.path) # 查看搜索路径2. 模块重载import foo# 修改foo.py后from importlib import reloadreload(foo) # 重新加载模块3. 条件执行if __name__ == '__main__': # 单独执行时的代码 main()else: # 被导入时的代码 pass四、注意事项通过灵活运用这些导入方式,可以高效组织Python项目代码,实现功能复用和模块化开发。