.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生成可视化报告

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/76621.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go 字符串四种拼接方式的性能对比

简介 使用完整的基准测试代码文件,可以直接运行来比较四种字符串拼接方法的性能。 for 索引 的方式 for range 的方式 strings.Join 的方式 strings.Builder 的方式 写一个基准测试文件 echo_bench_test.go package mainimport ("os""stri…

从代码学习深度学习 - Bahdanau注意力 PyTorch版

文章目录 1. 前言为什么选择Bahdanau注意力本文目标与预备知识2. Bahdanau注意力机制概述注意力机制简述加性注意力与乘性注意力对比Bahdanau注意力的数学原理与流程图数学原理流程图可视化与直观理解3. 数据准备与预处理数据集简介数据加载与预处理1. 读取数据集2. 预处理文本…

19【动手学深度学习】卷积层

1. 从全连接到卷积 2. 图像卷积 3. 图形卷积代码 互相关操作 import torch from torch import nn from d2l import torch as d2ldef corr2d(X, K):"""计算2维互相关运算"""h, w K.shapeY torch.zeros((X.shape[0]-h1, X.shape[1]-w 1))for …

Linux xorg-server 解析(一)- 编译安装Debug版本的xorg-server

一:下载代码 1. 配置源,以Ubuntu24.04 为例( /etc/apt/sources.list.d/ubuntu.sources): 2. apt source xserver-xorg-core 二:编译代码 1. sudo apt build-dep ./ 2. DEB_BUILD_OPTIONS="nostrip" DEB_CFLAGS_SET="-g -O0" dpkg-buildpac…

大模型SFT用chat版还是base版 SFT后灾难性遗忘怎么办

大模型SFT用chat版还是base版 进行 SFT 时,基座模型选用 Chat 还是 Base 模型? 选 Base 还是 Chat 模型,首先先熟悉 Base 和 Chat 是两种不同的大模型,它们在训练数据、应用场景和模型特性上有所区别。 在训练数据方面&#xf…

【图像生成之21】融合了Transformer与Diffusion,Meta新作Transfusion实现图像与语言大一统

论文:Transfusion: Predict the Next Token and Diffuse Images with One Multi-Modal Model 地址:https://arxiv.org/abs/2408.11039 类型:理解与生成 Transfusion模型‌是一种将Transformer和Diffusion模型融合的多模态模型,旨…

动态多目标进化算法:基于知识转移和维护功能的动态多目标进化算法(KTM-DMOEA)求解CEC2018(DF1-DF14)

一、KTM-DMOEA介绍 在实际工程和现实生活中,许多优化问题具有动态性和多目标性,即目标函数会随着环境的变化而改变,并且存在多个相互冲突的目标。传统的多目标进化算法在处理这类动态问题时面临着一些挑战,如收敛速度慢、难以跟踪…

部署NFS版StorageClass(存储类)

部署NFS版StorageClass存储类 NFS版PV动态供给StorageClass(存储类)基于NFS实现动态供应下载NFS存储类资源清单部署NFS服务器为StorageClass(存储类)创建所需的RBAC部署nfs-client-provisioner的deployment创建StorageClass使用存储类创建PVC NFS版PV动态供给StorageClass(存储…

Vue使用el-table给每一行数据上面增加一行自定义合并行

// template <template><el-table:data"flattenedData":span-method"objectSpanMethod"borderclass"custom-header-table"style"width: 100%"ref"myTable":height"60vh"><!-- 订单详情列 -->&l…

vue项目使用html2canvas和jspdf将页面导出成PDF文件

一、需求&#xff1a; 页面上某一部分内容需要生成pdf并下载 二、技术方案&#xff1a; 使用html2canvas和jsPDF插件 三、js代码 // 页面导出为pdf格式 import html2Canvas from "html2canvas"; import jsPDF from "jspdf"; import { uploadImg } f…

大模型LLM表格报表分析:markitdown文件转markdown,大模型markdown统计分析

整体流程&#xff1a;用markitdown工具文件转markdown&#xff0c;然后大模型markdown统计分析 markitdown https://github.com/microsoft/markitdown 在线体验&#xff1a;https://huggingface.co/spaces/AlirezaF138/Markitdown 安装&#xff1a; pip install markitdown…

Linux 第二讲 --- 基础指令(二)

前言 这是基础指令的第二部分&#xff0c;但是该部分的讲解会大量使用到基础指令&#xff08;一&#xff09;的内容&#xff0c;为了大家的观感&#xff0c;如果对Linux的一些基本指令不了解的话&#xff0c;可以先看基础指令&#xff08;一&#xff09;&#xff0c;同样的本文…

python格式化字符串漏洞

什么是python格式化字符串漏洞 python中&#xff0c;存在几种格式化字符串的方式&#xff0c;然而当我们使用的方式不正确的时候&#xff0c;即格式化的字符串能够被我们控制时&#xff0c;就会导致一些严重的问题&#xff0c;比如获取敏感信息 python常见的格式化字符串 百…

LLaMA-Factory双卡4090微调DeepSeek-R1-Distill-Qwen-14B医学领域

unsloth单卡4090微调DeepSeek-R1-Distill-Qwen-14B医学领域后&#xff0c;跑通一下多卡微调。 1&#xff0c;准备2卡RTX 4090 2&#xff0c;准备数据集 医学领域 pip install -U huggingface_hub export HF_ENDPOINThttps://hf-mirror.com huggingface-cli download --resum…

React Hooks: useRef,useCallback,useMemo用法详解

1. useRef&#xff08;保存引用值&#xff09; useRef 通常用于保存“不会参与 UI 渲染&#xff0c;但生命周期要长”的对象引用&#xff0c;比如获取 DOM、保存定时器 ID、WebSocket等。 新建useRef.js组件&#xff0c;写入代码&#xff1a; import React, { useRef, useSt…

Spring AI 结构化输出详解

一、Spring AI 结构化输出的定义与核心概念 Spring AI 提供了一种强大的功能&#xff0c;允许开发者将大型语言模型&#xff08;LLM&#xff09;的输出从字符串转换为结构化格式&#xff0c;如 JSON、XML 或 Java 对象。这种结构化输出能力对于依赖可靠解析输出值的下游应用程…

THM Billing

1. 信息收集 (1) Nmap 扫描 bashnmap -T4 -sC -sV -p- 10.10.189.216 输出关键信息&#xff1a; PORT STATE SERVICE VERSION22/tcp open ssh OpenSSH 8.4p1 Debian 5deb11u380/tcp open http Apache 2.4.56 (Debian) # MagnusBilling 应用3306/tcp open …

布局决定终局:基于开源AI大模型、AI智能名片与S2B2C商城小程序的战略反推思维

摘要&#xff1a;在商业竞争日益激烈的当下&#xff0c;布局与终局预判成为企业成功的关键要素。本文探讨了布局与终局预判的智慧性&#xff0c;强调其虽无法做到百分之百准确&#xff0c;但能显著提升思考能力。终局思维作为重要战略工具&#xff0c;并非一步到位的战略部署&a…

贪心算法 day08(加油站+单调递增的数字+坏了的计算机)

目录 1.加油站 2.单调递增的数字 3.坏了的计算器 1.加油站 链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; gas[index] - cost[index]&#xff0c;ret 表示的是在i位置开始循环时剩余的油量 a到达的最大路径假设是f那么我们可以得出 a b …

【技术派部署篇】云服务器部署技术派

1 环境搭建 1.1 JDK安装 # ubuntu sudo apt update # 更新apt apt install openjdk-8-jdk # 安装JDK安装完毕之后&#xff0c;执行 java -version 命令进行验证&#xff1a; 1.2 Maven安装 cd ~ mkdir soft cd soft wget https://dlcdn.apache.org/maven/maven-3/3.8.8/bina…