第二步:加一个生成器

给书架加一个 long_ones(),用 生成器惰性产出所有厚书的书名。 补全后只输出第一本厚书的书名。

开始练习 →

第三步:加一个装饰器

写一个 counted 装饰器记录调用次数,装在 long_ones 上。 调用两次之后只输出 CALLS。

开始练习 →

第四步:打成一个包

把 Book 放进一个叫 booklib 的包里,并在 __init__.py 里把它提上来。 补全后直接用 booklib.Book 造一本 302 页的书,输出它算不算厚。

开始练习 →

交付:五样一起验收

这是这条路线的最终作品。把类、生成器、装饰器、类型注解、测试五样一起验一遍: 造一本 302 页的书,is_long() 是 True 厚书生成器的第一个是「三体」 装饰器记到的调用次数是 1 is_long 的返回值注解是 bool 一本

开始练习 →

C 和 Python 跑起来最大的差别是什么

同样写一个打印语句,Python 存好就能跑,C 不行。差别在于【0】。

开始练习 →

⚠️ 「编译」和「链接」分别在做什么

写完就能跑,还是中间要落几趟 一步到位 要落几趟 gcc 跑完之后你拿到一个可执行文件。中间这两步里,链接负责的是【0】。

开始练习 →

那行 include 是哪一步处理的

写完就能跑,还是中间要落几趟 一步到位 要落几趟 源码顶上那行 #include,是在【0】被处理掉的。

开始练习 →

⚠️ 编译通过了,是不是就能跑

写完就能跑,还是中间要落几趟 一步到位 要落几趟 gcc 编译一个 .c 文件没报错。这说明【0】。

开始练习 →

中间产物是文件,这件事有什么用

写完就能跑,还是中间要落几趟 一步到位 要落几趟 C 的每一步都会落下一个文件(.i / .s / .o)。这么做的好处是【0】。

开始练习 →

第一个 C 程序输出什么

写完就能跑,还是中间要落几趟 一步到位 要落几趟 (本条路线统一用 gcc -std=c11 -O0 编译)最小的一个 C 程序: #include <stdio.h> int main(void) { printf(

开始练习 →