or、and表达式(短路逻辑)

短路逻辑

and和or的含义

假设a为真命题,b为假命题,那“a与b”是假命题,“a或b”为真命题

运算符 含义 逻辑表达式 说明
and 与运算 a and b 当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假。
or 或运算 a or b 当 a 和 b 两个表达式都为假时,a or b 的结果才是假,否则为真。

python中的and 和or

/*
在and运算中:
一个为假,那整个运算肯定都为假,无论b是真还是假,都不会影响最终的结果,所以直接返回a的值,
如果为真,那后面的b不知是真还是假,所以要继续运算,则返回b的值。
*/
​
/*
在或运算中,只要有一个为真,那整个运算都为真,所以只要a为真,那不管b是真还是假,最终的结果都是真,所以返回a的值。
反之。
*/
运算符 含义 逻辑表达式 说明
and 与运算 a and b 当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假。
or 或运算 a or b 当 a 和 b 两个表达式都为假时,a or b 的结果才是假,否则为真。

短路逻辑定义

所谓短路:即后续代码不再执行

若and左侧的表达式为false,则短路之后所有的and表达式,直到出现or,则返回and左侧表达式的值继续与or的右侧参与运算。 此时若,or左侧的表达式为true,则短路之后所有的表达式,不管是or还是and,直接输出or左侧表达式的值。 此时若,or 的左侧为 False ,或者 and 的左侧为 True 则不能使用短路逻辑。

# 短路
​
def a():
    print("a")
    return 0
​
def b():
    print("b")
    return 1
​
def c():
    print("c")
    return 2
​
def d():
    print("d")
    return 3
​
def e():
    print("e")
    return 0
​
def f():
    print("f")
    return 4
​
def g():
    print("g")
    return 0
​
def h():
    print("h")
    return 5
​
#因为a为0,所以 b() and c()则不会执行,0and d函数返回3,3后面是or,所以满足“or左侧的表达式为true,则短路之后所有的表达式,不管是or还是and”
result = a() and b() and c() or d() or e() and g() or h() # 执行a、d两个函数
print(result) #  3
​
# 不短路
​
def a():
    print("a")
    return 0
​
def b():
    print("b")
    return 1
​
def c():
    print("c")
    return 2
​
def d():
    print("d")
    return 0
​
def e():
    print("e")
    return 0
​
def f():
    print("f")
    return 4
​
def g():
    print("g")
    return 0
​
def h():
    print("h")
    return 5
# 因为0 or d(),满足"or 的左侧为 False ,或者 and 的左侧为 True 则不能使用短路逻辑",所以后面的要继续执行
result = a() and b() and c() or d() or e() and g() or h() # 执行a、d、e、h函数
print(result) #  5
posted @ 2022-11-06 22:00  无敌大牛牛  阅读(221)  评论(0编辑  收藏  举报