hongweipeng 发布的文章

is 语法带来的误解


起步

Python 的成功一个原因是它的可读性,代码清晰易懂,更容易被人类所理解,但有时可读性会产生误解。

假如要判断一个变量是不是 17,那可以:

if x is 17:

x 是 17 肯定是比 x == 17 更加口语化的。


如何跳出两层循环


起步

Python 中如果跳出嵌套的循环?这是大家都会遇到的问题。python 语法并不支持 break n 的语句,break 只能跳出一层循环。

要跳出两层循环,一般的处理方式是,把第二层循环包装成函数,利用函数的返回进行判断并退出。又或者设置个布尔变量来标记循环的结束。

直到我看到 pycon2013 中的一种优雅的处理方式,视频见:https://www.youtube.com/watch?v=EnSu9hHGq5o


Python内核阅读(二十五):信号处理机制


起步

Python处理信号是在 signal 模块中,这个模块其实是纯python代码对 _signal 的封装。要想知道Python解释器本身如何处理信号以及如何实现的,还需要去了解 signalmodule.c 。其中,比较需要了解的是python解释器与操作系统有关信号的交互。

大体上,Python解释器不太可能会操作系统发出的信号立即做回调。因为Python的Opcode操作是原子操作,不允许被中断。所以Python解释器对信号做一层封装,并做好标记,待时机得当的时候来检查并触发相关的回调函数。