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

.py文件和.ipynb文件的区别:完整教程

一、概述

Python开发者常用的两种文件格式.py.ipynb各有特点,本教程将通过对比分析、代码示例和场景说明,帮助开发者全面理解二者的区别与联系。

在这里插入图片描述


二、核心区别对比

1. 文件格式本质

特性.ipynb文件.py文件
文件类型JSON结构化文档纯文本文件
存储内容代码单元 + 运行输出 + Markdown文档纯Python代码 + 注释
可读性需特定工具解析任意文本编辑器直接查看
典型大小较大(包含输出结果)较小(仅代码)

在这里插入图片描述

技术验证:

# 查看.ipynb文件结构
$ jupyter nbconvert --to script example.ipynb
$ file example.ipynb  # 显示: JSON text data

2. 交互性差异

Jupyter Notebook交互流程:

创建代码单元
执行单元
结果正确?
继续下一单元
修改当前单元

Python脚本执行流程:

编辑.py文件
保存文件
运行整个脚本
输出正确?
完成

3. 可视化能力对比

可视化类型.ipynb支持情况.py文件支持情况
即时图表渲染✅ 直接显示在单元下方❌ 需保存为图片文件
交互式图表✅ 支持Plotly等库❌ 仅静态图
Markdown排版✅ 原生支持❌ 需第三方库
LaTeX公式✅ 完美支持❌ 需额外配置

三、代码示例对比

案例1:数据分析报告

在Jupyter中的实现:

# 学生成绩分析```python
import pandas as pd
df = pd.read_csv('grades.csv')
df.describe()
```![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=output.png&pos_id=img-atMoNhZ5-1744465838720)

对应.py文件:

# grades_analysis.py
import pandas as pd
import matplotlib.pyplot as pltdf = pd.read_csv('grades.csv')
print(df.describe())df.hist()
plt.savefig('output.png')
print("图表已保存至output.png")

案例2:机器学习调试

Jupyter单元调试:

# 单元1:数据加载
from sklearn.datasets import load_iris
iris = load_iris()# 单元2:查看特征
print(iris.feature_names)  # 输出:['sepal length (cm)', ...]# 单元3:训练模型
from sklearn.svm import SVC
clf = SVC().fit(iris.data, iris.target)

对应.py调试方式:

# debug_script.py
from sklearn.datasets import load_iris
from sklearn.svm import SVCdef main():iris = load_iris()print("Features:", iris.feature_names)  # 需手动添加调试输出clf = SVC().fit(iris.data, iris.target)# 需要添加更多print语句定位问题if __name__ == "__main__":main()

四、格式转换指南

1. 双向转换方法

# .ipynb转.py
$ jupyter nbconvert --to script notebook.ipynb# .py转.ipynb
$ jupytext --to notebook script.py

2. 转换注意事项

  • 使用nbconvert转换时会丢失交互式输出
  • Markdown注释需要手动添加# %% [markdown]标记
  • 推荐使用jupytext保持双向同步

五、选择指南

决策流程图

新项目开始
需要交互调试?
选择.ipynb
需要生产部署?
选择.py
需要文档结合?

推荐使用场景

场景推荐格式原因说明
探索性数据分析.ipynb即时可视化+逐步调试
算法原型开发.ipynb快速迭代验证
Web服务后端.py适合生产环境部署
自动化脚本.py命令行友好
教学/技术文档.ipynb代码+解释一体化
持续集成(CI/CD).py易于自动化测试

六、混合使用技巧

1. 最佳实践方案

project/
├── notebooks/        # 存放.ipynb文件
│   └── exploration.ipynb
├── src/              # 存放.py文件
│   └── utils.py
└── requirements.txt

2. 交互式开发模式

# 在.ipynb中调用.py模块
%load_ext autoreload
%autoreload 2from src.utils import data_cleaner# 交互式使用模块功能
cleaner = data_cleaner()
cleaner.preview()  # 即时查看效果

七、常见问题解答

Q1:能否直接在生产环境运行.ipynb文件?

不建议,但可通过以下方式实现:

$ jupyter nbconvert --execute --to notebook --inplace production.ipynb

Q2:如何保护.ipynb中的敏感信息?

推荐方案:

  1. 将敏感数据移出notebook
  2. 使用环境变量
  3. 转换为.py后加密处理

Q3:版本控制如何处理差异?

解决方案:

# 安装过滤插件
$ pip install nbstripout# 设置git过滤
$ nbstripout --install --attributes .gitattributes

八、总结建议

  • 初学阶段:优先使用.ipynb快速验证想法
  • 团队协作:使用.py进行代码规范化开发
  • 项目演进:原型阶段用.ipynb,成熟后转为.py
  • 文档输出:坚持使用.ipynb生成可视化报告

通过理解二者的差异并掌握转换技巧,开发者可以充分发挥两种格式的优势,在不同场景下选择最合适的工具。

相关文章:

.py文件和.ipynb文件的区别:完整教程

一、概述 Python开发者常用的两种文件格式.py和.ipynb各有特点,本教程将通过对比分析、代码示例和场景说明,帮助开发者全面理解二者的区别与联系。 二、核心区别对比 1. 文件格式本质 特性.ipynb文件.py文件文件类型JSON结构化文档纯文本文件存储内容…...

【AI】AI大模型发展史:从理论探索到技术爆发

一、早期探索阶段—理论与技术奠基 1.1 符号主义与连接主义的博弈 20世纪50-70年代,符号主义AI主导研究方向,通过专家系统模拟人类逻辑推理,但受限于计算能力和数据规模。80年代连接主义AI兴起,以神经网络为核心,反向…...

【项目管理】第11章 项目成本管理-- 知识点整理

相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 项目管理知识域 知识点: (项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域) 对应:第6章-第19章 ​ ​ (二)知识笔记​ 第11章 项目成本管理 ​ 1.管理基础…...

初学STM32之编码器测速以及测频法的实现

资料来着江协科技 这篇是编码器测速,江科大的源码在测速的时候,定时器TIM2是一直在跑的,不受其它控的,它就一直隔1S读一次CNT的值。它也不管是否有输入信号。源码程序修改一下是可以实现对PWM信号以测频法的方式读取。 笔者稍微改…...

Linux 内核知识体系[1]

1 Linux内核知识体系 2.Linux内核学习路线 2.1基础知识准备 操作系统基础:了解操作系统的概念和基本原理,包括进程管理、内存管理、文件系统、输入输出等。 书籍:《操作系统:设计与实现》(Andrew S. Tanenbaum&…...

408 计算机网络 知识点记忆(7)

前言 本文基于王道考研课程与湖科大计算机网络课程教学内容,系统梳理核心知识记忆点和框架,既为个人复习沉淀思考,亦希望能与同行者互助共进。(PS:后续将持续迭代优化细节) 往期内容 408 计算机网络 知识…...

Mac 下载 PicGo 的踩坑指南

Mac 下载 PicGo 的踩坑指南 一、安装问题 下载地址:https://github.com/Molunerfinn/PicGo/releases 下载之后直接安装即可,此时打开会报错:Picgo.app 文件已损坏,您应该将它移到废纸篓。 这是因为 macOS 为了保护用户不受恶意…...

消失的它:揭开 CoreData 托管对象神秘的消失之谜(上)

概述 使用 CoreData 作为 App 持久存储“定海神针”的小伙伴们想必都知道,我们需要将耗时的数据库查询操作乖巧的放到后台线程中,以便让主线程负责的 UI 获得风驰电掣般地享受。 不过,如何将后台线程中查询获得的托管对象稳妥的传送至主线程…...

电流互感器的两相星形接线的建模与仿真

微♥“电击小子程高兴的MATLAB小屋”获取巨额优惠 1.模型简介 本仿真模型基于MATLAB/Simulink(版本MATLAB 2016Rb)软件。建议采用matlab2016 Rb及以上版本打开。(若需要其他版本可联系代为转换) 2.仿真模型 3.仿真结果 3.1一次…...

Day3—循环起来吧

第一章一切从安装有利工具开始 第二章Python基本语法 第三章结构化程序设计 3.1条件语句 3.1.1if语句 只需要判断一个条件,并且在该条件为 True 时执行特定的代码块,而在条件为 F…...

forms+windows添加激活水印

formswindows添加激活水印 多语言水印文本,根据系统语言自动切换。水印显示在每个屏幕的右下角,位置动态调整。半透明灰色文字,微软雅黑字体。窗口无边框、置顶、透明背景,不干扰用户操作。支持多显示器。高DPI适配。 效果图&am…...

014_多线程

多线程 多线程创建线程方式一:继承Thread类方式二:实现Runable接口方式三:实现Callbale接口 Thread的常用方法线程安全线程同步方式一:同步代码块同步方法方式三:Lock锁 线性池创建线程池处理Runnable任务处理Callable…...

R语言基础包可视化(一:axis函数)

R语言基础包可视化(一:axis函数) 背景axis函数(坐标轴函数)各参数的图片示例hadj和padjline和poslty,lwd,lwd.ticksgap.axis总结背景 之前在介绍正态Q-Q图的过程中,画过标准正态分布的随机数、分数数、分布函数、密度函数的图像,相关的文章连接参考此处:R语言正态Q-Q图…...

Spring MVC 处理 HTTP 状态码、响应头和异常的完整示例

Spring MVC 处理 HTTP 状态码、响应头和异常的完整示例 1. 正常响应处理 通过 ResponseEntity 可以灵活控制 HTTP 状态码、响应头和响应体。 代码示例:创建资源返回 201 并设置 Location 头 import org.springframework.http.HttpHeaders; import org.springfram…...

Linux安装postgresql17

1、下载 wget https://ftp.postgresql.org/pub/source/v17.4/postgresql-17.4.tar.gz 2、上传解压 tar -zxvf postgresql-17.4.tar.gz 3、安装依赖 yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel …...

从零搭建微服务项目Pro(第0章——微服务项目脚手架搭建)

前言: 在本专栏Base第0章曾介绍一种入门级的微服务项目搭建,尽管后续基于此框架上实现了Nacos、Eureka服务注册发现、配置管理、Feign调用、网关模块、OSS文件存储、JSR参数校验、LogBack日志配置,鉴权模块、定时任务模块等,但由于…...

dolphinscheduler创建文件夹显示存储未启用的问题--已解决

只要修改api-server/comf/common.properties和standalone-server/conf/common.properties里面的内容就可以了,应为你要靠standalone-server这个服务启动dolphinscheduler-web,其他就算怎么改你重启dolphinscheduler的时候系统也不会识别新的common.prope…...

C++线段树详解与实现技巧

📚 C++线段树详解与实现技巧 线段树(Segment Tree)是一种高效处理 区间查询 和 区间更新 的数据结构,时间复杂度为 O(log n)。本文结合代码实例,详解其核心原理与实现细节。 🌳 线段树结构特点 完全二叉树:使用数组存储,父子节点关系通过下标计算。区间划分:每个节…...

聊一聊原子操作和弱内存序

1、原子操作概念 在并发编程中,原子操作(Atomic Operation)是实现线程安全的基础机制之一。从宏观上看,原子操作是“不可中断”的单元,但若深入微观层面,其本质是由底层处理器提供的一组特殊指令来保证其原…...

VIRT, RES,SHR之间的关系

VIRT、RES 和 SHR 是进程内存使用的三个关键指标,它们之间的关系反映了进程的内存分配和使用情况。以下是它们的定义和关系: VIRT(虚拟内存):表示进程分配的虚拟内存总量,包括所有代码、数据、共享库、堆栈…...

Ubuntu中部署MeloTTS

0. 环境 ubuntu server 22.04 cuda version 12.4 python version 3.9 1. 安装python依赖 git clone https://github.com/myshell-ai/MeloTTS.git cd MeloTTS注意不是执行 pip install melotts 如果国内服务器无法从github中下载源码,那么可以把github改为gitc…...

2024年React最新高频面试题及核心考点解析,涵盖基础、进阶和新特性,助你高效备战

以下是2024年React最新高频面试题及核心考点解析,涵盖基础、进阶和新特性,助你高效备战: 一、基础篇 React虚拟DOM原理及Diff算法优化策略 • 必考点:虚拟DOM树对比(同级比较、Key的作用、组件类型判断) •…...

Adobe After Effects的插件--------Optical Flares之Options概述

Optical Flares插件的Options是对整个效果的组装和设置。点击该按钮会弹出一个组装室弹窗。 Options组装室就是对每个【镜头对象】进行加工处理,再将其组装在一起,拼凑成完整的光效。 接下来是我对组装室的探索: 面板 面板中有预览、堆栈、编辑和浏览按钮,其作用是调节窗…...

深入解读 React 纯组件(PureComponent)

什么是纯组件? React 的纯组件(PureComponent)是 React.Component 的一个变体,它通过浅比较(shallow comparison)props 和 state 来自动实现 shouldComponentUpdate() 方法,从而优化性能。 核心特点 1. 自动浅比较: PureCompon…...

微信小程序事件详解

微信小程序中的事件绑定是实现交互功能的核心机制之一。通过事件绑定,开发者可以监听用户的操作行为(如点击、输入、滑动等),并根据需要执行相应的逻辑处理。 以下是关于微信小程序事件绑定的详细说明: 一、事件绑定的…...

字符串与相应函数(上)

字符串处理函数分类 求字符串长度:strlen长度不受限制的字符串函数:strcpy,strcat,strcmp长度受限制的字符串函数:strncpy,strncat,strncmp字符串查找:strstr,strtok错误信息报告:strerror字符操作,内存操作函数&…...

Laravel源码进阶

Laravel源码进阶 版本 laravel5.8 生成服务容器 public index.php //compose必要操作 require __DIR__./../vendor/autoload.php; //容器文件 $app require_once __DIR__./../bootstrap/app.php;-bootstrap/app.php //初始化容器 构造函数中执行这个几个方法 //$this->…...

镜舟科技亮相 2025 中国移动云智算大会,展示数据湖仓一体创新方案

4月10-11日,2025 中国移动云智算大会在苏州金鸡湖国际会议中心成功举办。大会以“由云向智,共绘算网新生态”为主题,汇聚了众多行业领袖与技术专家,共同探讨了算力网络与人工智能的深度融合与未来发展趋势。 作为中国领先的企业级…...

2025蓝桥杯省赛C/C++研究生组游记

前言 至少半年没写算法题了,手生了不少,由于python写太多导致行末老是忘记打分号,printf老是忘记写f,for和if的括号也老是忘写,差点连&&和||都忘记了。 题目都是回忆版本,可能有不准确的地方。 …...

重读《人件》Peopleware -(6)Ⅰ管理人力资源Ⅴ-帕金森定律重探 Parkinson’s Law Revisited

1954年,英国作家C. Northcote Parkinson引入了一个概念:工作会膨胀以填满分配给它的时间,这个概念现在被熟知为帕金森定律。如果你不知道很少有管理者接受过任何管理培训的话,你可能会以为他们都参加过一个关于帕金森定律及其影响…...