当前位置: 首页 > 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/

@浙大疏锦行

相关文章:

  • PHP设计模式实战:微服务架构与事件驱动系统
  • android过渡动画
  • iOS性能调试完整流程实录:工具组合下的问题定位与修复实践(含keymob)
  • PyTorch深度学习框架60天进阶学习计划 - 第58天端到端对话系统(一):打造你的专属AI语音助手
  • 嵌入式PADS原理图与元件符号绘制实现
  • 如何安装使用qmt脚本跟单聚宽策略
  • Vue嵌套路由
  • Ubuntu Server 24.04|22.04|20.04|18.04 安装GUI DESKTOP xfce4
  • Java详解LeetCode 热题 100(32):LeetCode 138. 随机链表的复制
  • WPF数据绑定疑惑解答--(关于控件的Itemsource,Collection绑定)
  • 大模型的开发应用(十):对话风格微调项目(上):数据工程与模型选型
  • 【SystemVerilog 2023 Std】第5章 词法约定 Lexical conventions (1)
  • Elasticsearch 常用命令(未完成)
  • MFCLIP模型实现通用扩散人脸伪造检测
  • java集合(八) ---- Vector 类
  • GPU服务器租赁服务商TOP9
  • Acrobat 首选项配置:从注册表到锁定机制
  • 【Photoshop】使用路径和形状制作印章
  • vue父类跳转到子类带参数,跳转完成后去掉参数
  • 多文件,多开发环境配置 Spring boot
  • 网站中的表单怎么做/收录入口在线提交
  • 一种子网站做的很好的视频广告/抚顺优化seo
  • 专题活动是在官方网站还是在其他网站做/近期10大新闻事件
  • 一级a做爰片免费网站天天看/网站怎么做出来的
  • 关于桥梁建设工程设公司网站/百度seo快速排名优化服务
  • 汽车做网站/最全bt磁力搜索引擎索引