自己看:三段代码的树顶各是什么

看看三段代码建出来的树,顶层节点分别是哪一类: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)) 把编译产物里的局部名单和要往外找的名单各打出来。

开始练习 →