4 Matching Annotations
  1. Sep 2026
    1. 此处的 7 表示字符数,runoob 有 6 个字符,\n 表示一个字符,加起来 7 个字符

      没问题!去掉表格,用更直观的列表对比法,记笔记更轻松 👇


      二、vs print() —— 关键区别

      • 换行行为

        • print():默认自动换行(末尾加 \n)。
        • sys.stdout.write()绝不自动换行。想换行必须手动在字符串里写 \n,否则下一次输出会紧挨着当前内容。
      • 参数与类型

        • print():能接收多个参数(如 print(a, b, c)),且会自动把非字符串类型(数字、列表等)转成字符串。
        • sys.stdout.write()只能接收一个参数,且必须是字符串。传数字或列表会直接报错 TypeError
      • 返回值

        • print():返回 None(纯输出,无反馈)。
        • sys.stdout.write():返回成功写入的字符数(整数)。可用于校验输出是否完整。
      • 性能与底层

        • print():是高级封装函数,内部做了格式化、类型转换、换行处理,有额外开销。
        • sys.stdout.write():是直接操作标准输出流的底层方法,无多余处理,在高频/大量输出时性能更好

      💡 一句话总结选择建议

      • 日常开发、调试、普通输出 → 用 print()(方便、安全、不易错)。
      • 需要精确控制输出格式、高性能批量写入、或实现自定义输出逻辑 → 用 sys.stdout.write()
    2. Python3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串

      🐍 Python3 编码 & Unicode 字符串 · 小白笔记

      1️⃣ 为什么需要编码?

      电脑只懂 0 和 1。<br /> 编码 = 把文字翻译成 01 的规则。<br /> 不同语言有不同规则(中文用 UTF-8/GBK,俄文用 cp-1252…),混用会乱码。


      2️⃣ Python3 默认:UTF-8 + Unicode 字符串

      ✅ 所有 .py 文件默认按 UTF-8 读取。<br /> ✅ 所有字符串(str)都是 Unicode 字符串 —— 意思是:

      💡 它存的是“字符本身”(比如“你”=U+4F60),不是某种编码的字节。<br /> 💡 支持全球文字:中文、英文、emoji、俄文…随便混写!

      python s = "你好😊" print(len(s)) # 3 → 是字符数,不是字节数!


      3️⃣ # -*- coding: cp-1252 -*- 是干嘛?

      告诉 Python:“别用默认 UTF-8,我这个文件是用 cp-1252 编码保存的!”

      📌 适用场景: - 老代码 / 别人给的文件 - 处理俄语、保加利亚语等东欧文字(cp-1252 支持这些)

      ⚠️ 不加这行,Python 按 UTF-8 读 → 可能报错或乱码。


      4️⃣ Unicode vs 编码(UTF-8, GBK…)—— 关键区别!

      | | Unicode | UTF-8 / GBK / cp-1252 | |----------|-----------------------------|------------------------------| | 是什么 | 全球统一字符集(无论那个国家的语言的每个字都有唯一编号) | 把 Unicode 编号“打包成字节”的方式 | | 类比 | 字典里的词条编号 | 快递打包方式 | | Python3 | str 类型内部存储的就是它 | 读写文件时才用到(.encode()/.decode()) |


      5️⃣ 两个重要类型

      | 类型 | 含义 | 示例 | |---------|--------------------|-----------------------| | str | Unicode 字符串(文本) | "你好" | | bytes | 字节序列(二进制) | b'\xe4\xbd\xa0' |

      🔁 互相转换:

      python text = "你好" byte_data = text.encode('utf-8') # str → bytes original = byte_data.decode('utf-8') # bytes → str

      ❌ 用错编码解码 → 乱码或报错!


      🎯 一句话总结:

      Python3 的字符串是 Unicode字符串(支持全世界文字),默认用 UTF-8 读写文件;除非遇到老代码,否则你根本不用管编码的事!


    1. Python 特点

      9.GUI编程:Python 提供多种 GUI 框架(如 Tkinter、PyQt),它们封装了底层操作系统差异。开发者只需编写一套代码,即可在 Windows、Linux、macOS 等多平台上运行,无需针对不同系统的原生 API 进行适配,完美继承了 Python 解释型语言的易移植优势。

  2. Aug 2026
    1. 一种解释型语言

      Python 解释型特性详解笔记(对比版)

      1. 执行机制对比

      • 编译型 (C/C++):源代码通过编译器一次性转换为特定平台的机器码(二进制文件),运行时由操作系统直接加载执行。修改代码后必须重新编译、链接整个项目。过程: 源代码 → 编译器 → 机器码(二进制文件) → 运行
      • Python (解释型):源代码首先被自动编译为平台无关的字节码.pyc),再由 PVM(Python虚拟机) 在运行时逐条翻译为机器码执行。整个过程对开发者透明,无需手动干预。过程: 源代码 → 解释器 → 字节码 (Bytecode) → PVM (Python虚拟机) → 机器码 → 运行
      • 为什么需要字节码:纯粹的逐行解释源码太慢了。字节码是一种紧凑的、预处理的指令集,比解析原始文本快得多,但又不像机器码那样绑定特定硬件。
      • 注意: Python 并非“纯解释”,它是 “先编译后解释” 的混合模式。但这种编译是自动的、隐式的,对开发者透明。

      2. 开发效率与体验

      • 编译型:开发循环长(编码→编译→链接→运行→调试),需处理头文件依赖、库链接等底层细节,学习曲线陡峭。
      • Python保存即运行,支持 REPL 交互式环境,可即时验证逻辑。开发者专注于业务逻辑而非构建流程,大幅缩短迭代周期。

      3. 跨平台与移植性

      • 编译型:生成的二进制文件绑定特定 CPU 架构和操作系统。移植到新平台通常需要修改代码并重新编译,甚至调整依赖库。
      • Python:字节码是抽象指令集,不依赖具体硬件。只要目标机器安装了对应版本的 Python 解释器,同一份源码或字节码即可在 Windows、Linux、macOS 上无缝运行,实现“Write Once, Run Anywhere”。

      4. 性能与错误处理权衡

      • 性能:编译型语言因直接执行优化后的机器码,运行速度极快;Python 因运行时翻译、动态类型检查及内存管理开销,执行速度通常慢 10-100 倍(可通过 Cython/PyPy 等工具缓解)。
      • 错误发现时机:编译型在编译阶段即可捕获语法错误、类型不匹配、链接失败等问题;Python 作为动态语言,许多错误(如变量未定义、属性缺失)只有在程序运行到该行代码时才会抛出异常,增加了测试覆盖的要求。

      💡 核心本质

      Python 并非纯解释器,而是 “隐式编译 + 显式解释” 的混合模型。其设计哲学是以牺牲部分运行时性能为代价,换取极高的开发生产力、代码可读性与跨平台灵活性。这种权衡使其成为脚本编写、快速原型、数据科学及 AI 领域的首选,但在高性能计算场景中仍需结合编译型扩展。