5.3 单行实现 for 死循环如何写?

image0

如果让你在不借助 while ,只使用 for 来写一个死循环?

你会写吗?

如果你还说简单,你可以自己试一下。

如果你尝试后,仍然写不出来,那我给出自己的做法。

for i in iter(int, 1):pass

是不是傻了?iter 还有这种用法?这为啥是个死循环?

关于这个问题,你如果看中文网站,可能找不到相关资料。

还好你可以通过 IDE 看py源码里的注释内容,介绍了很详细的使用方法。

原来iter有两种使用方法。

  • 通常我们的认知是第一种,将一个列表转化为一个迭代器。

  • 而第二种方法,他接收一个 callable对象,和一个sentinel 参数。第一个对象会一直运行,直到它返回 sentinel 值才结束。

int 呢?

这又是一个知识点,int 是一个内建方法。通过看注释,可以看出它是有默认值0的。你可以在console 模式下输入 int() 看看是不是返回0。

由于int() 永远返回0,永远返回不了1,所以这个 for 循环会没有终点。一直运行下去。

image1