_not_divisible()函数到底是几个参数
Topic source每调用一次next(it)就计算一次下一个符合条件的素数。而这里就是通过filter()的筛选函数功能当前n值得倍数剔除掉。
你可以这样子理解,当对生成奇数7的时候,系程序会对7%3>0进行判断筛选,在对7%5>0进行判断筛选,然后通过筛选,输出7为下一个素数。
it = filter(_not_divisible(n), it)
这上面的语句,在执行时,可以理解为,每生成一个数列值都进行了一系列的嵌套的条件判断进行筛选。
一开始是n=3,但是此时 it 还没有筛选函数,所以直接输出3.
之后执行 it = filter(_not_divisible(n), it)给it添加了筛选函数 lambda x: x % 3 > 0.
再在执行next(it),n=n+2=5; 当执行 yield n=5 时,进行筛选.5%3=2>0 返回true。即 n = next(it) = 5;
然后给it添加了筛选函数 lambda x: x % 5 > 0. 并且包含之前的lambda x: x % 3 > 0.
依次类推。 最好运行调试一下看看。
filter(lambda x: x % n > 0,filter(lambda x: x % 5 > 0, filter(lambda x: x % 3 > 0, it) ) )
- 1
Blown_Wang
这句里的_not_divisible()函数到底是几个参数啊?
它语句中的x是哪里来的呢?
传递的就是it迭代器中的项?
看了好几本python教程,所有的filter函数都是直接传递函数名的,第一个看到带参数作为形参的。