filter
def f(x):
return x and math.sqrt(x)-int(math.sqrt(x))==0
def f(x):
return math.sqrt(x)-int(math.sqrt(x))==0
为什么这两个代码结果一样呢。下面这个代码感觉有点理解不了 返回这个等式?
def f(x):
return x and math.sqrt(x)-int(math.sqrt(x))==0
def f(x):
return math.sqrt(x)-int(math.sqrt(x))==0
为什么这两个代码结果一样呢。下面这个代码感觉有点理解不了 返回这个等式?
2019-01-11
and叫做逻辑运算符,只有前后都为1(或者说为真)的时候,and表达式才返回1(或者说真)。
其实,除了0都是1。比如,
if 0 :
print(1)
和
if 1 :
print(1)
及if -1:
print(1)
后两者都可以输出。(就是上面说的,不是0就是1。)
返回来看and,and在进行判断时,有的地方叫做“惰性判断”,有的叫做“短路判断”。就是说如果and前面的返回结果为假,and后面的表达式就不看了,整个表达式直接返回假。
也就是说,如果and前面为假,表达式返回假,如果不为假,则直接返回and后面的表达式的返回结果。因为and前表达式不为假,and的结果就完全取决于后面的表达式。
回头看你的第一个函数,and之前x参数,x的取值是1-100,说过了,除了0就是1。也就是前为真,整个表达式返回and之后的内容,也因此,两个函数在功能上是相同的。
举报