注意点:字节码查看方法以及字节码的输出需要关注哪些

Python生成器字节码查看与核心元素解析

一、字节码查看方法

通过Python内置的dis模块可查看生成器字节码,直观验证其"暂停/恢复"的底层逻辑:

python 复制代码
import dis

# 示例1:基础生成器
def gen_func_basic():
    yield 1
    yield 2

# 示例2:带自定义变量的生成器
def gen_func_with_var():
    a = 1
    yield a

# 查看字节码
print("=== 基础生成器字节码 ===")
dis.dis(gen_func_basic)
print("\n=== 带变量生成器字节码 ===")
dis.dis(gen_func_with_var)

二、字节码核心元素拆解

1.带变量生成器字节码输出(关键部分)

复制代码
  9           0 LOAD_CONST               1 (1)
              2 STORE_FAST               0 (a)

 10           4 LOAD_FAST                0 (a)
              6 YIELD_VALUE
              8 POP_TOP
             10 LOAD_CONST               0 (None)
             12 RETURN_VALUE

2. 核心元素定义(以带变量示例为例)

元素类型 示例值 说明
偏移量 0、2、4、6、8、10、12 纯数字,标记指令的位置
指令 LOAD_CONST、STORE_FAST、YIELD_VALUE、RETURN_VALUE 英文关键词,代表底层操作
变量/常量 1 (1)、0 (a)、0 (None) 指令右侧数值/字面量,是指令操作的目标数据

总结

  1. 偏移量:纯数字(如0、2、4),仅标记指令位置;
  2. 指令:英文关键词(如YIELD_VALUE),是生成器"暂停/恢复"的核心操作;
  3. 变量/常量:指令右侧数据(如1、a、None),是指令的操作对象。
相关推荐
CHANG_THE_WORLD6 分钟前
<Fluent Python > Unicode 文本与字节
开发语言·python
测试员周周7 分钟前
【AI测试系统】第1篇:LangGraph 实战:用 State Graph 搭建 AI测试流水线(4 步编排 + RAG 增强 + 完整代码)
linux·windows·python·功能测试·microsoft·单元测试·多轮对话
噜噜噜阿鲁~12 分钟前
python学习笔记 | 8.2、函数式编程-返回函数
笔记·python·学习
中二痞27 分钟前
下载Python 版本,环境变量变更以及PyCharm更换python版本
开发语言·python·pycharm
SilentSamsara30 分钟前
标准库精讲:collections/itertools/functools/pathlib 实战
开发语言·vscode·python·青少年编程·pycharm
小郑加油30 分钟前
python学习Day8-9天:函数(def)的基础运用
python·学习
2401_8242226930 分钟前
如何卸载并重装Oracle Grid_Deinstall脚本与ASM磁盘清理
jvm·数据库·python
qq_4142565734 分钟前
生产库如何利用Navicat实现配置特定触发器事件调度_提高管理效率
jvm·数据库·python
2301_7756398939 分钟前
mysql如何查看服务器支持的存储引擎_使用SHOW ENGINES命令
jvm·数据库·python
love530love41 分钟前
Python 3.12 解决 MediaPipe “no attribute ‘solutions‘” 终极方案:基于全版本硬核实测的避坑指南
开发语言·人工智能·windows·python·comfyui·mediapipe·solutions