代码
1 import math
2
3 def GetAllPrime(maxNum):
4 if maxNum<10000:
5 return [num for num in range(2,maxNum) if 0 not in [num%i for i in range(2,int(math.sqrt(num))+1)]]
6 else:
7 return [num for num in xrange(2,maxNum) if 0 not in [num%i for i in range(2,int(math.sqrt(num))+1)]]
8
9 if __name__=='__main__':
10 def Print(s):
11 print s
12 [Print(i) for i in GetAllPrime(100)] #Right
13 #[(lambda x:print x)(i) for i in GetAllPrime(10)] #Error
2
3 def GetAllPrime(maxNum):
4 if maxNum<10000:
5 return [num for num in range(2,maxNum) if 0 not in [num%i for i in range(2,int(math.sqrt(num))+1)]]
6 else:
7 return [num for num in xrange(2,maxNum) if 0 not in [num%i for i in range(2,int(math.sqrt(num))+1)]]
8
9 if __name__=='__main__':
10 def Print(s):
11 print s
12 [Print(i) for i in GetAllPrime(100)] #Right
13 #[(lambda x:print x)(i) for i in GetAllPrime(10)] #Error
原因:
lambda语句用来创建函数对象。本质上,lambda需要一个参数,后面仅跟单个表达式作为函数体,而表达式的值被这个新建的函数返回。注意,即便是print语句也不能用在lambda形式中,只能使用表达式。