.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.pswp.cn/bicheng/76621.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/76621.shtml
英文地址,請注明出處:http://en.pswp.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…