Discuss / Python / 求助(为什么匿名函数换了位置,结果就不对了,逻辑上出了什么问题?)

求助(为什么匿名函数换了位置,结果就不对了,逻辑上出了什么问题?)

Topic source

#构造一个从3开始的奇数序列:

def _odd_iter(): n = 1 while True: n = n + 2 yield n

#定义一个筛选函数

#定义一个生成器,不断返回下一个素数

def primes(): yield 2 it = _odd_iter() # 初始序列 while True: n = next(it) # 返回序列的第一个数 yield n it = filter(lambda x: x % n > 0, it) # 构造新序列

打印1000以内的素数:

for n in primes(): if n < 1000: print(n) else: break

我仔细对比了一下,例子中的代码是先把n作为参数传入_not_divisible函数中,然后返回了一个关于x的函数,你这样一改就相当于直接传入x作为参数,逻辑关系就混乱了


  • 1

Reply