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

一、模块(Module)

1. 概念

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

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

2. 导入语法

python 复制代码
# 方法1:导入整个模块(推荐)
import 模块名
模块名.函数()

# 取别名
import 模块名 as 别名
别名.函数()

# 方法2:导入指定函数/类(最常用)
from 模块名 import 函数1, 函数2
函数1()

# 方法3:导入全部(不推荐!可读性差)
from 模块名 import *

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

1. __name__(最常用)

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

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

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

python 复制代码
def test():
    print("我是模块功能")

# 只有直接运行这个文件才会执行
if __name__ == '__main__':
    test()

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

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

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

在模块里写:

python 复制代码
# 只允许 import * 导入这两个函数
__all__ = ["B1", "B2"]

def B1(): pass
def B2(): pass
def B3(): pass  # 不会被 * 导入

三、包(Package)

1. 概念

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

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

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

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

python 复制代码
包名:my_package
模块:B.py
函数:B1()
python 复制代码
# 方法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 里:

python 复制代码
__all__ = ["A", "B"]

__all__默认为None。

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

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

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

安装命令

python 复制代码
# 正常安装
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 装第三方包

相关推荐
JACK的服务器笔记1 分钟前
《服务器测试百日学习计划——Day19:PCIe自动检测脚本,用Python把lspci设备清点标准化》
服务器·python·学习
zybsjn2 分钟前
异步并发的“流量警察”:在C#中使用SemaphoreSlim进行并发控制的最佳实践
开发语言·c#
Cx330❀4 分钟前
线程进阶实战:资源划分与线程控制核心指南
java·大数据·linux·运维·服务器·开发语言·搜索引擎
人道领域5 分钟前
【黑马点评日记02】:Session+ThreadLocal实现短信登录
java·开发语言·spring·tomcat·intellij-idea
YJlio5 分钟前
Sysinternals实战教程专栏介绍:这不是一本到此为止的书,而是一套看穿 Windows 的排障方法
windows·python·电脑·outlook·windows部署·eixv3·pe装机
广州灵眸科技有限公司7 分钟前
瑞芯微(EASY EAI)RV1126B 系统操作-线进程操作
开发语言·科技·嵌入式硬件·物联网
好运的阿财7 分钟前
OpenClaw工具拆解之 sessions_list+sessions_history
人工智能·python·程序人生·ai·ai编程·openclaw
Ulyanov8 分钟前
打造现代化雷达电子对抗仿真界面 第三篇:综合电子战指挥控制台——多视图协同与插件化架构
python·架构·系统仿真·雷达电子战
杜子不疼.9 分钟前
Python + AI 实战:用 LangChain 搭建企业级 RAG 知识库
人工智能·python·langchain
无敌昊哥战神10 分钟前
【算法与数据结构】深入浅出回溯算法:理论基础与核心模板(C/C++与Python三语解析)
c语言·数据结构·c++·笔记·python·算法