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

Python3 模块

一、模块基础

1. 什么是模块?

本质:一个 .py 文件就是一个模块,存放函数、类、变量,用于代码复用、分文件管理。
作用:避免代码冗余、拆分大型程序、提高可读性 / 维护性。

2. 模块分类

  1. 内置模块:Python 自带,无需安装(os/sys/json/random等)
  2. 第三方模块:需pip install安装(requests/pandas等)
  3. 自定义模块:自己写的.py文件

二、模块导入(4 种核心语法)

1. 导入整个模块

import模块名 模块名.函数/变量/# 调用必须加模块名前缀

示例:

importmathprint(math.sqrt(16))# 输出 4.0

2. 导入指定成员(常用)

from模块名import函数/变量/

示例:

frommathimportsqrt,piprint(sqrt(16))# 直接调用,无需前缀print(pi)

3. 导入并起别名(解决重名 / 简化)

运行import模块名as别名from模块名import成员as别名

示例:

importmathasmfrommathimportsqrtassqprint(m.sqrt(16))print(sq(16))

4. 导入所有成员(不推荐)

from模块名import*

缺点:易命名冲突,可读性差。

三、模块运行机制

1. 导入时:Python 会执行模块内所有代码

2. 搜索路径:

  • 当前目录
  • 环境变量PYTHONPATH
  • Python 安装目录的标准库

3. 缓存:导入后会生成__pycache__/模块名.cpython-xx.pyc,加速下次导入

四、ifname== ‘main’:(必背)

作用
区分:直接运行本文件 VS 被当作模块导入
直接运行:name= ‘main’,执行下方代码
被导入:name= 模块名,不执行下方代码
标准写法

# demo.pydefadd(a,b):returna+b# 测试代码,仅直接运行时执行(只在我自己运行时执行)if__name__=='__main__':print(add(1,2))# 直接运行输出3,导入不执行

ps:

  1. name:系统内置隐藏变量,原生自带,无需声明
  2. 自己单独跑文件 ➜ 值 =main
  3. 被别人导入使用 ➜ 值 = 当前文件名
  4. ifname== ‘main
    就是判断:现在我是独立程序,还是别人的工具模块

五、包(Package)

1. 什么是包?

本质:存放模块的文件夹,必须包含__init__.py(Python3.3 + 可省略,但建议保留)

2. 包结构示例

my_package/ __init__.py module1.py module2.py

3. 导入包内模块

# 方式1importmy_package.module1 my_package.module1.func()# 方式2(常用)frommy_packageimportmodule1 module1.func()# 方式3frommy_package.module1importfunc

4.init.py 作用

标识文件夹为Python 包
可写初始化代码、定义__all__控制*导入

# __init__.py 中写__all__=['module1','module2']# 控制 from 包 import * 可导入的模块

六、模块搜索路径(sys.path)

importsys# 查看所有搜索路径(列表)print(sys.path)# 临时添加自定义路径(程序结束失效)sys.path.append("/Users/xxx/my_modules")

七、常用内置模块(高频)

1. os(操作系统交互)

importos os.getcwd()# 当前目录os.listdir()# 目录文件列表os.path.exists('a.txt')# 判断文件是否存在os.mkdir('test')# 创建文件夹

2. sys(Python 解释器交互)

importsys sys.argv# 命令行参数列表sys.path# 模块搜索路径sys.exit()# 退出程序

3. json(JSON 数据处理)

importjson# 字典 → JSON字符串json_str=json.dumps({"name":"tom"})# JSON字符串 → 字典data=json.loads(json_str)

4. random(随机数)

importrandom random.randint(1,10)# 1-10随机整数random.choice([1,2,3])# 随机选一个

5. time /datetime(时间)

importtime time.time()# 时间戳time.sleep(1)# 暂停1秒importdatetime datetime.datetime.now()# 当前时间

八、第三方模块安装(pip)

# 安装pipinstall模块名# 卸载pip uninstall 模块名# 查看已安装pip list

九、模块核心注意事项

  1. 不要和内置模块重名(如自建os.py会覆盖系统模块)
  2. 导入顺序:标准库 → 第三方库 → 自定义模块
  3. 循环导入(A 导入 B,B 导入 A)会报错,需拆分代码解决
  4. 模块内变量、函数、类默认公开,_开头表示私有(约定俗成)

总结

  1. 一个.py就是一个模块,文件夹 +init.py就是包
  2. 4 种导入:import / from … import / as / *
  3. ifname== ‘main’: 区分运行 / 导入
  4. sys.path 控制模块搜索路径
  5. 内置模块高频:os/sys/json/random/time
http://www.jsqmd.com/news/699903/

相关文章:

  • 2026年乌鲁木齐房屋渗漏不用愁!5家正规防水公司推荐+避坑指南 - 品牌企业推荐师(官方)
  • 保姆级教程:在Vue3项目里用ECharts GL搞个炫酷的3D地图(附可点击、飞线、天空盒源码)
  • 大模型预训练技术深度解析:从原理到实践
  • toFixed()和toLocaleString()无法同时使用,最终结果不理想
  • SMAPI安卓安装器:如何让星露谷物语在手机上玩出PC版MOD体验?
  • 51PR媒体发布平台整合近10万媒体资源,助力企业高效发稿
  • 现代密码学(一)
  • 重新定义地图创作:如何通过TEdit实现泰拉瑞亚世界的无限可能
  • 系统性能瓶颈分析与优化
  • 04-09-03 从心开始 - 学习笔记
  • QR相对强弱值是什么?桥博士揭秘“跑赢大盘”的量化密码
  • 哪款代餐减肥效果好?2026年热门产品测评:告别挨饿与反弹 - 品牌企业推荐师(官方)
  • 从平津烽火到数智未来:北龙云海顺利开展主题党日活动
  • 【2026最新版|必收藏】小白程序员大模型入门全指南,少走半年弯路,轻松切入AI赛道
  • 手把手教你用Python和tshark搞定USB鼠标流量取证(附完整脚本)
  • CAD导入ansys失败解决方案
  • 异常中断与捕获机制解惑--AI生成
  • 为什么Windows系统需要一个专业级Syslog服务器?Visual Syslog Server给你答案
  • GetQzonehistory:一键永久备份QQ空间说说的完整解决方案
  • ERP系统进销存模块源码深度解析(附代码):核心逻辑与实现方案
  • 消费后的积分空攒无用?国家出手了,积分线上线下通用。
  • OMC - 09 oh-my-claudecode 的多 Agent 编排实战
  • 长提示词优化5大技巧,让AI大模型更稳定可控
  • 二叉树先序线索化及先序线索二叉树找后继
  • 2026年佛山高空车出租,优选佛山卓越高空车租赁推荐,TOP五大排名榜解读 - 品牌企业推荐师(官方)
  • VS Code Dev Containers调试失效?揭秘launch.json与container-apps调试协议的3层握手失败根源及修复清单
  • 高级前端需要学习那些东西?
  • 避坑- Qwen3-TTS语言大模型长文本生成的语速变快或声音异常
  • OpenModScan:免费开源的工业Modbus调试工具终极指南
  • sfy recommand