Python 3.5 的解包操作符

今天我想要聊聊 Python 中用于解包(Unpacking)的两个操作符号——***

* 最为常见的用法是用来表示乘法。但我们也可以将 * 用于任意一个可迭代对象(iterable object)1上,表示我们想要提取里面所有的值

海象表达式简明教程(Python 3.8)

今天要说的是在 Python3.8 中引入的新特性:海象运算符(Walrus operator),这是一个备受争议的特性,但它最后还是通过并发布了🤔

在 Python 中,赋值语句(=)并不是 expression 而是 statement。海象表达式则是 expression。关于 statement 和 expression 的区别可以简单理解为:expression 总是会返回值,而 statement 不返回值。

什么是堆和栈

如果你一直都是是用动态语言,比如 Python、Javascript 这种,你很可能并不会注意到栈和堆的区别。因为这些语言有垃圾收集器(Garbage collector,GC)存在,会自动帮你做好内存管理,你只要集中注意力编程即可。坏消息是 GC 并不是没有成本的事情,实际上设计再好的 GC 算法,也会降低代码的性能。如果你接触编程的时间足够久,那么想必你可能会听到过什么“递归层数太深栈爆炸了”这种话,此时你可能会点开搜索引擎稍微了解一下栈和堆的区别,有可能你就刚好点进了这一篇文章 :)

Vim Macro 101

在我学习 Vim 的过程中,最具有启发意义的一句话是:

Vim 其实是一门“编程语言”

很早之前我就接触过 Vim,但是当时 Vim 的按键组合对我来说很难记,再加上 Vim 的界面实在太过于复古,于是我就转向了比较现代的文本编辑器。但当我学完 Missing semester 这门课程的时候,我对 Vim 的看法有了改观:它远远不止是一个文本编辑器,各种 Vim 的命令的排列组合更像是在写代码,背后都是有逻辑的!