专业人士笔记”系列目录:创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!zhuanlan.zhihu.com
‘and’ 和 ‘or’ 并不一定返回一个布尔值
当使用or时,如果为真,它将返回表达式中的第一个值,否则它将直接返回第二个值,其效果和“或等于”差不多,用代码表现如下 :
def or_(a, b):
if a:
return a
else:
return b
对于and,如果为false,它将返回其第一个值,否则返回最后一个值,用代码表现如下:
def and_(a, b):
if not a:
return a
else:
return b
一个简单的例子
在Python中,你可以使用两个二进制操作符比较单个元素 :
if 3.14 < x < 3.142:
print("x 近似于 pi")
在大多数编程语言中,上面的表达式将以一种与常规数学相反的方式进行计算:
(3.14 < x) < 3.142 这样的顺序去计算;
但在Python中,它被视为 3.14 < x 并且 x < 3.142,就像大多数非程序员所期望的那样
表达式计算过程
Python会将所有布尔表达式作最简化处理,即一旦发现可以不用继续往下运行,将直接中断并返回,如下代码:
def true_func():
print("true_func()")
return True
def false_func():
print("false_func()")
return False
true_func() or false_func()
#输出:true_func() #运行到这里不继续向下运行了
#输出:True 两个只要有一个True就返回True
false_func() or true_func()
# 输出:false_func()
# 输出:true_func()
#输出:True #两个函数都被运行,到第2个函数时,发现是True,所以仍然返回True
true_func() and false_func()
# true_func()
# false_func()
# False 第一个函数为True,继续运行第二个函数发现是False,那么整体返回也是False
false_func() and false_func()
# false_func()
# 输出:False 运行第一个就发现False,整体表达式结束,返回False
and 操作符
当且仅当两个参数都为真时,计算第二个参数。否则计算为第一个falsey参数
x = True
y = True
z = x and y # z = True
x = True
y = False
z = x and y # z = False
x = False
y = True
z = x and y # z = False
x = False
y = False
z = x and y # z = False
x = 1
y = 1
z = x and y # z = 1,注意他们不是总返回布尔值
x = 0
y = 1
z = x and y # z = 0 很好理解,你就把1看做True,0看做False
x = 1
y = 0
z = x and y # z = 0 (看上面)
x = 0
y = 0
z = x and y # z = 0 (看上面)
上面示例中的1可以更改为任何真值,而0可以更改为任何假值:
在python中,假值为‘0’或'()’,真值为所有非0非空数值,你可以直接在代码里尝试
or 操作符
如果其中一个是真值, 返回表达式中第一个值;如果两个参数都是假的,则返回第二个值。
x = True
y = True
z = x or y # z = True
x = True
y = False
z = x or y # z = True
x = False
y = True
z = x or y # z = True
x = False
y = False
z = x or y # z = False
x = 1
y = 1
z = x or y # z = 1
x = 1
y = 0
z = x or y # z = 1
x = 0
y = 1
z = x or y # z = 1
x = 0
y = 0
z = x or y # z = 0 (返回第2个值)
上面示例中的1可以更改为任何真值,而0可以更改为任何假值:
在python中,假值为‘0’或'()’,真值为所有非0非空数值,你可以直接在代码里尝试
not 操作符
它返回与下列语句相反的语句:
x = True
y = not x # y = False
x = False
y = not x # y = True
今天的分享就到这里,禁止转载,违者必究!