{
  "schemaVersion": "0.11.0",
  "canonical": "https://www.pystone.net/notes/chatgpt-pyc-vs-pyd/",
  "atlas": "https://www.pystone.net/?node=chatgpt-pyc-vs-pyd#knowledge-atlas",
  "markdown": "https://www.pystone.net/notes/chatgpt-pyc-vs-pyd.md",
  "context": "https://www.pystone.net/notes/chatgpt-pyc-vs-pyd.context.json",
  "knowledgeVersion": "224c990773de.5fa8af6e39fa",
  "build": {
    "siteCommit": "224c990773de166d23a886306577dd90379529ce",
    "notesCommit": "5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a",
    "builtAt": "1970-01-01T00:00:00.000Z",
    "version": "224c990773de.5fa8af6e39fa"
  },
  "id": "note:chatgpt-pyc-vs-pyd",
  "slug": "chatgpt-pyc-vs-pyd",
  "title": "【ChatGPT】pyc与pyd",
  "type": "note",
  "visibility": "public",
  "idStability": "rename-stable",
  "author": {
    "name": "Perrin Yong",
    "profile": "https://www.pystone.net/profile/"
  },
  "publisher": {
    "name": "Perrin Yong",
    "profile": "https://www.pystone.net/profile/"
  },
  "aliases": [],
  "summary": "【ChatGPT】pyc与pyd",
  "contentRole": "unspecified",
  "isMoc": false,
  "mocRecognition": "none",
  "generated": false,
  "attribution": "unspecified",
  "domain": "99-资料来源、摘录与归档",
  "tags": [],
  "mocs": [],
  "contentHash": "8ca33fb200cb938139a51fbf7179b8b15a76ab8e8d7a8330cd143c2760295d9c",
  "assets": [],
  "headings": [
    {
      "depth": 1,
      "text": "【ChatGPT】pyc与pyd",
      "anchor": "chatgptpyc与pyd",
      "citation": "https://www.pystone.net/notes/chatgpt-pyc-vs-pyd/#chatgptpyc%E4%B8%8Epyd"
    },
    {
      "depth": 3,
      "text": "字节码（.pyc文件）",
      "anchor": "字节码pyc文件",
      "citation": "https://www.pystone.net/notes/chatgpt-pyc-vs-pyd/#%E5%AD%97%E8%8A%82%E7%A0%81pyc%E6%96%87%E4%BB%B6"
    },
    {
      "depth": 3,
      "text": "机器码（.pyd/.so文件）",
      "anchor": "机器码pydso文件",
      "citation": "https://www.pystone.net/notes/chatgpt-pyc-vs-pyd/#%E6%9C%BA%E5%99%A8%E7%A0%81pydso%E6%96%87%E4%BB%B6"
    },
    {
      "depth": 3,
      "text": "总结：",
      "anchor": "总结",
      "citation": "https://www.pystone.net/notes/chatgpt-pyc-vs-pyd/#%E6%80%BB%E7%BB%93"
    }
  ],
  "claims": [],
  "outgoing": [],
  "incoming": [
    {
      "id": "note:sources-excerpts-archive",
      "title": "资料来源、摘录与归档",
      "url": "https://www.pystone.net/notes/sources-excerpts-archive/",
      "atlas": "https://www.pystone.net/?node=sources-excerpts-archive#knowledge-atlas",
      "label": "资料来源、摘录与归档",
      "origin": "explicit",
      "humanReviewed": true,
      "context": "02-AI对话与研究原始输出中的“【ChatGPT】pyc与pyd”导航项",
      "citation": "https://www.pystone.net/notes/sources-excerpts-archive/#02-ai%E5%AF%B9%E8%AF%9D%E4%B8%8E%E7%A0%94%E7%A9%B6%E5%8E%9F%E5%A7%8B%E8%BE%93%E5%87%BA"
    }
  ],
  "contentMarkdown": "# 【ChatGPT】pyc与pyd\n\n> [!note] ChatGPT 问答录\n> 本文保存一次 ChatGPT 问答原始输出，仅作为资料来源；其中结论未自动视为已验证知识，使用前应结合可靠来源复核。\n\n\n﻿# 【ChatGPT】pyc与pyd\n\n字节码（通常存储在 `.pyc` 文件中）和机器码（可以在 `.pyd` 文件中找到）是两种不同类型的代码表示，它们在编译过程、执行方式和用途上有本质的区别。下面是对这两者的比较：\n\n### 字节码（`.pyc`文件）\n\n1. **定义**：字节码是Python源代码的中间表示形式，它是由Python解释器从源代码（`.py`文件）编译得来的。字节码是平台无关的。\n2. **执行方式**：字节码不是直接运行在目标机器上的，而是在Python虚拟机（PVM）上执行。PVM负责进一步解释或编译这些字节码到机器码。\n3. **用途**：字节码的主要目的是使Python代码的加载和执行更快。它避免了每次运行程序时都重新编译源代码的开销。\n4. **跨平台性**：字节码是跨平台的，同一份字节码可以在任何安装有相应版本Python解释器的系统上运行。\n\n### 机器码（`.pyd`/`.so`文件）\n\n1. **定义**：机器码是编程语言（通常是C或C++）编译后的低级代码，它是特定于平台的，并且直接由计算机的中央处理单元（CPU）执行。\n2. **执行方式**：机器码直接在硬件上执行，无需Python虚拟机的介入。这使得它运行得更快，但也意味着它需要针对每个目标平台分别编译。\n3. **用途**：`.pyd`（Windows）或`.so`（Linux/macOS）文件通常包含Python无法直接提供或在性能上不够高效的功能。这包括系统调用、性能关键的数学运算和封装现有的C/C++库。\n4. **跨平台性**：机器码不是跨平台的。针对不同的操作系统和硬件架构，需要编译出不同的二进制文件。\n\n### 总结：\n\n- 字节码（`.pyc`）是一种中间代码，需要Python虚拟机来解释执行，它是跨平台的，使Python代码的加载和执行更快。\n- 机器码（`.pyd`/`.so`）是直接在硬件上运行的低级代码，特定于平台，通常用于性能关键的任务和系统级访问。\n\n理解这两者的区别有助于你更好地理解Python程序的运行机制以及如何通过不同的方式来优化和扩展Python程序。\n"
}
