def main():
for n in primes():
if n<100:
print(n)
else:
break
def _odd_iter():
n=1
while True:
n=n+2
yield n
def _not_divisible(n):
return lambda x:x % n>0
def primes():
#素数不包括1,从2开始
yield 2
it=_odd_iter()
while True:
n=next(it)
yield n
it=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__。
当模块被直接运行时,以下代码块将被运行,当模块是被导入时,代码块不被运行