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

python基础学习笔记第九章——模块、包

一、模块(Module)

1. 概念

一个.py文件就是一个模块,里面可以写:函数、类、变量、代码,通过导入方式使用

作用:拆分代码、复用代码、避免一个文件太臃肿

2. 导入语法

# 方法1:导入整个模块(推荐) import 模块名 模块名.函数() # 取别名 import 模块名 as 别名 别名.函数() # 方法2:导入指定函数/类(最常用) from 模块名 import 函数1, 函数2 函数1() # 方法3:导入全部(不推荐!可读性差) from 模块名 import *

二、模块里的两个内置变量

1.__name__(最常用)

  • 文件直接运行__name__ == "__main__"

  • 文件被别人导入__name__ == "文件名"

用途:让模块只在直接运行时才执行代码,被导入时不执行

def test(): print("我是模块功能") # 只有直接运行这个文件才会执行 if __name__ == '__main__': test()

若导入的多个模块有同名的功能,则后导入的功能生效。

2.__all__控制 import *,但不能控制单独导入

当使用import *时,可以控制哪些功能可以导入

在模块里写:

# 只允许 import * 导入这两个函数 __all__ = ["B1", "B2"] def B1(): pass def B2(): pass def B3(): pass # 不会被 * 导入

三、包(Package)

1. 概念

存放多个模块的文件夹,一个包包含多个.py文件,同时必须包含:__init__.py文件

包 = 文件夹 +__init__.py(会自带,必须有)+ 多个.py模块

作用:管理多个相关模块,避免模块名冲突,让代码结构更清晰、层级更分明,便于大型项目的代码组织和维护(比如将功能相关的模块放在同一个包下,方便查找和复用)。

2. 包的导入写法(推荐)

包名:my_package 模块:B.py 函数:B1()
# 方法1(最清晰、最推荐) from my_package import B B.B1() # 方法2(直接导函数) from my_package.B import B1 B1() # 方法3(导入整个包) import my_package.B my_package.B.B1()

3. 包里面的__all__

写在__init__.py里:

__all__ = ["A", "B"]

__all__默认为None。

作用:控制from 包 import *能导入哪些模块。

四、第三方包(别人写好的工具)

Python 拥有丰富的第三方包生态,这些非官方内置的包能大幅提升开发效率,覆盖科学计算(numpy)、数据分析(pandas)、大数据计算(pyspark、apache-flink)、图形可视化(matplotlib、pyecharts)、人工智能(tensorflow)等主流场景,需通过pip install安装后,以import导入使用。。

安装命令

# 正常安装 pip install 包名 # 国内镜像(速度快) pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名

PyCharm 安装

  1. 打开File → Settings → Project: xxx → Python

  2. +搜索包名 → 点击Install Package

总结

  1. 一个 .py 文件 = 一个模块

  2. 带 init.py 的文件夹 = 包

  3. import/from ... import用来导入

  4. if __name__ == '__main__'控制运行入口

  5. __all__控制*能导入什么

  6. pip install装第三方包

http://www.jsqmd.com/news/518740/

相关文章:

  • (二)云端开发环境一站式部署:Miniconda3、GPU版PyTorch与PyCharm 2022远程调试及Jupyter Server配置实战
  • 基于Minio与Web Worker的现代前端大文件上传架构实践
  • 避坑指南:银河麒麟V10运行QT6时中文输入法崩溃的5个修复方案
  • hadoop+spark股票行情预测 量化交易分析 股票推荐系统 机器学习 随机森林算法 Python语言
  • Coze工作流实战:我把飞书多维表格变成了一个“第一人称视频”自动生产线
  • 好写作AI | 经管类毕业论文AI辅助案例分析框架构建的实践探索
  • 基于YOLOv8/YOLOv10/YOLOv11/YOLOv12与SpringBoot的车辆识别检测系统(DeepSeek智能分析+web交互界面+前后端分离+YOLO数据)
  • MaxViT多轴注意力机制详解:从理论到PyTorch实现
  • Opik实战:5分钟搞定LangChain智能体全链路追踪(含避坑指南)
  • 好写作AI | 法学学位论文中AI辅助法条检索与论证逻辑的可靠性研究
  • 基于YOLOv8/YOLOv10/YOLOv11/YOLOv12与SpringBoot的字母数字识别检测系统(DeepSeek智能分析+web交互界面+前后端分离+YOLO数据)
  • 百考通:AI赋能,提供直观示例参考,让每一份调研与设计都高效落地
  • 【毕业设计】SpringBoot+Vue+MySQL 企业内管信息化系统平台源码+数据库+论文+部署文档
  • Java SpringBoot+Vue3+MyBatis 热门网游推荐网站系统源码|前后端分离+MySQL数据库
  • xv6内核调试实战:用trace和sysinfo洞察你的操作系统运行状态
  • Android开发者必看:360加固保最新配置避坑指南(2024版)
  • GDAL实战:5分钟搞懂geotransform参数与.tfw文件的互转技巧
  • 为什么我放弃了n8n云服务?Docker本地部署的3个不可替代优势
  • 第 494 场周赛Q1+Q2:101018. 构造奇偶一致的数组 I+101020. 构造奇偶一致的数组 II
  • 若依数据权限深度解析:从@DataScope注解到SQL拼接的全链路追踪
  • 基于YOLOv8/YOLOv10/YOLOv11/YOLOv12与SpringBoot的道路交通信号标志检测系统(DeepSeek智能分析+web交互界面+前后端分离+YOLO数据)
  • Simulink信号源模块隐藏技巧:90%用户不知道的Band-Limited White Noise和Chirp Signal高级配置
  • 帮你从算法的角度来认识数组------( 二 )
  • Android相机开发避坑指南:从Camera1到CameraX的实战迁移心得
  • 手把手玩转双目三维重建:从摄像头到点云工厂
  • 算法优化的多层缓存映射与访问调度模型的技术7
  • [Java EE 进阶] SpringBoot 配置文件全解析 : properties 与 yml 的使用与实战 (ULTRA)
  • 告别卡顿:FFmpeg多线程硬解码配置详解(以D3D12VA为例)
  • Cursor套壳Kimi败露,最强「自研」模型被锤!创始人:忘记署名了
  • DevSecOps实战 | 如何利用Black Duck实现开源组件安全与合规的左移策略