自己看:三段代码的树顶各是什么
看看三段代码建出来的树,顶层节点分别是哪一类:print("hi")、x = 1 + 2、if x: y = 1。
⚠️ 再往里看一层
print("hi") 的顶层是一句表达式语句。把它里面那一层也取出来看看是什么。
把三站的产物一次交出来
对 print("hi") 一次性给出三站的产物:词数、树顶层类型、编译期记下的第一个名字。
`.pyc` 文件里装的是什么
Python 跑过一遍之后,目录里多出来的 .pyc 装的是【0】。
⚠️ 这个算式什么时候算
源码里写着 y = 2 + 3 * 4。这个算式【0】。
编译期就分好的另一件事是什么
除了折常量,编译器在函数编译时还顺手把【0】分好了。
🔴 常量表里冒出了一个源码没写的数
源码是 y = 200 + 300 * 4。看看编译产物的常量表:算出来的 1400 在不在?源码里写的 300 和 4 还在不在? def consts(src): """编译一段源码,把它的常量表取
⚠️ 换成有变量参与,就折不动了
换一段:y = x + 0。这次算式里有个变量。常量表变成什么? def consts(src): """编译一段源码,把它的常量表取出来(None 不算)"""
自己写:两边常量表里最大的数
两段源码,一段全是常量、一段掺了变量。各自常量表里最大的那一项是多少?
🔴 两份名单,编译期就分好了
一个小函数: G = 10 def f(a): b = a + 1 return b + G + len(str(b)) 把编译产物里的局部名单和要往外找的名单各打出来。