当前位置: 首页 > news >正文

Python训练营-Day30-模块和库的导入

官方库(Python标准库)的导入方式主要有以下三种:

1.​完全导入

import math  # 导入整个math模块
print(math.sqrt(16))  # 调用时需加模块前缀[1,3,5](@ref)  
  • 适用场景​:频繁使用库中多个功能时,避免命名冲突
  • 内存占用​:较高(导入整个模块)

2.​精确导入(指定功能)​

from math import sqrt  # 仅导入sqrt函数
print(sqrt(16))  # 直接调用,无需模块前缀[1,3,5](@ref)  

 适用场景​:仅需少量功能时,代码更简洁

 ​注意​:可能引发命名冲突(如与本地变量同名)

 3.​别名导入

import numpy as np  # 为numpy设置别名np
print(np.array([1, 2, 3]))  # 通过别名调用[1,3,5](@ref)  

 适用场景​:长模块名简化(如pandas as pd)或避免命名冲突

 导入自定义库/模块的方式

 自定义模块的导入需考虑路径管理,常见方法如下

​1.同目录导入 

import mymodule  # 直接导入同级目录下的mymodule.py[1,7,10](@ref)  

 前提​:模块文件(如mymodule.py)与当前脚本在同一目录

2. ​子目录导入(包形式)

from subdir import utils  # 导入子目录subdir中的utils模块[4,10](@ref)  

要求​:子目录需包含__init__.py文件(可为空),标识为Python包

3.​跨目录导入(动态路径添加) 

import sys
sys.path.append('/path/to/module')  # 临时添加模块路径
import mymodule  # 导入非默认路径下的模块[2,7,10](@ref)  

 替代方案​:

  • 设置PYTHONPATH环境变量
  • 使用pathlib动态获取父目录路径

导入库/模块的核心逻辑:路径查找机制

Python解释器按以下顺序查找模块:

  1. 当前脚本所在目录
  2. PYTHONPATH环境变量指定目录
  3. Python标准库目录(如Lib/
  4. 第三方库目录(如site-packages/

 路径调试技巧​:

import sys
print(sys.path)  # 查看当前搜索路径import os
print(os.path.dirname(os.path.abspath(__file__)))  # 获取脚本绝对路径

四、特殊场景处理 

动态导入 

import importlib
module = importlib.import_module('module_name')

重新加载模块 

import importlib
importlib.reload(module)  # 强制刷新已修改的模块

 命名空间包(Python 3.3+)​
无需__init__.py文件即可实现跨目录模块组织

最佳实践建议

  1. 导入顺序规范​:

    • 标准库 → 第三方库 → 自定义模块
    • 每组之间用空行分隔
  2. 路径管理​:

    • 优先使用相对路径(包内导入)
    • 跨项目调用建议通过setup.py安装为可编辑模式
  3. 性能优化​:

    • 避免from module import *(易引发命名冲突)
    • 高频调用函数可赋值给局部变量

  大型项目结构​:

project/
├── main.py
├── core/          # 核心功能包
│   ├── __init__.py
│   └── utils.py
└── libs/          # 第三方库备份
    └── custom_lib/

@浙大疏锦行

http://www.xdnf.cn/news/1028737.html

相关文章:

  • EDW2025|从传统BI到AI Ready:企业数据与分析能力的实施策略演进
  • Java 锁升级机制详解
  • 芯片测试之VIL/VIH(输入电平)Test全解析:从原理到实战
  • 高通IPA硬件加速介绍
  • 03 | 大模型微调 | 从0学习到实战微调 | 玩转Hugging Face与Transformers框架
  • manpath: can‘t set the locale; make sure $LC_* and $LANG are correct
  • 设备管理-Udev(一)
  • E10集成登录三方系统
  • Python基础补漏
  • ESP32服务器端编码
  • SAM分割一切-使用SAM自动生成对象掩码示例
  • NB/T 32004-2018测试是什么,光伏并网逆变器NB/T 32004测试项目
  • ServiceNow培训第1期
  • MATLAB实现图像纹理特征提取
  • PMP证-介绍
  • 准确--使用 ThinBackup 插件执行备份和恢复
  • Python训练营打卡 Day53
  • 华为数字化转型进阶——精读188页华为EBPM数字化全要素流程管理方法论【附全文阅读】
  • rocketmq producer和consumer连接不同的集群,如何隔离
  • 渗透实战:利用XSS获取cookie和密码
  • JDBC基础关键_002_JDBC 增删改
  • ​​Promise代码理解
  • 如何通过Python从DEM文件生成坡度和坡向数据
  • 读取OpenFOAM二进制polyMesh格式的C/C++程序
  • 手搓中文字符编程语言
  • 一文掌握 Windows 文件传输:5 种命令行工具的原理、参数与示例
  • 中国人工智能证书综合信息表(2025年版)
  • 基于混合预编码的同时进行无线信息和功率传输的毫米波海量MIMO-NOMA
  • 如何确保邮件群发不会被标记为垃圾邮件?
  • 【测试开发】函数高阶-闭包、装饰器