廖雪峰python中filter生成素数
def main(): for n in primes():if n<100:print(n)else:breakdef _odd_iter():n=1while True:n=n+2yield ndef _not_divisible(n):return lambda x:x % n>0def primes():#素数不包括1,从2开始yield 2it=_odd_iter()while True:n=next(it)yield nit=filter(_not_divisible(n),it)
if __name__=='__main__':main()
it=filter(_not_divisible(n),it)
it=filter(lambdax:x % n>0,it)两次结果不一样
lambda中n是引用(所以会变,都是同一个)而经过函数的 n 会被拷贝一份放闭包里
闭包是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。
__name__ 是当前模块名,当模块被直接运行时模块名为 __main__。
当模块被直接运行时,以下代码块将被运行,当模块是被导入时,代码块不被运行
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
