Python 中逻辑运算 and 和 or 的短路特性

Pythonandor的短路特性

众所周知,Python中逻辑运算and可用于判断多个条件是否都符合要求,or可用于判断是否存在一个条件满足要求。为了加速运行,Python中的andor具有短路特性

  • and的短路特性

    • and左侧值判定为False后,则不会执行and右侧的内容,并将整体判定为False

    • and左侧值判定为True后,才会执行and右侧的内容,来最终判定整体

  • or的短路特性
    • or左侧值判定为True后,则不会执行or右侧的内容,并将整体判定为True
    • or左侧值判定为False后,才会执行or右侧的内容,来最终判定整体

代码示例

先定义两个函数以便查看是否被执行到

def printFalse():
    print("False函数执行")
    return False


def printTrue():
    print("True函数执行")
    return True

and的短路特性

and左侧值判定为False后,则不会执行and右侧的内容,并将整体判定为False

示例

print('and左侧判定为False后,则不会执行and右侧的内容')
print('====================================')
if printFalse() and printTrue():
    print("Python and组合内容判断为True后执行")
print('====================================')
if printFalse() and printFalse():
    print("Python and组合内容判断为True后执行")
print('====================================')

输出结果

and左侧判定为False后,则不会执行and右侧的内容
====================================
False函数执行
====================================
False函数执行
====================================

and左侧值判定为True后,才会执行and右侧的内容,来最终判定整体

示例

print('and左侧判定为True后,才会执行and右侧的内容')
print('====================================')
if printTrue() and printFalse():
    print("Python and组合内容判断为True后执行")
print('====================================')
if printTrue() and printTrue():
    print("Python and组合内容判断为True后执行")
print('====================================')

输出结果

and左侧判定为True后,才会执行and右侧的内容
====================================
True函数执行
False函数执行
====================================
True函数执行
True函数执行
Python and组合内容判断为True后执行
====================================

or的短路特性

or左侧值判定为True后,则不会执行or右侧的内容,并将整体判定为True

示例

print('or左侧判定为True后,则不会执行or右侧的内容')
print('====================================')
if printTrue() or printFalse():
    print("Python or组合内容判断为True后执行")
print('====================================')
if printTrue() or printTrue():
    print("Python or组合内容判断为True后执行")
print('====================================')

输出结果

or左侧判定为True后,则不会执行or右侧的内容
====================================
True函数执行
Python or组合内容判断为True后执行
====================================
True函数执行
Python or组合内容判断为True后执行
====================================

or左侧值判定为False后,才会执行or右侧的内容,来最终判定整体

示例

print('or左侧判定为False后,才会执行or右侧的内容')
print('====================================')
if printFalse() or printTrue():
    print("Python or组合内容判断为True后执行")
print('====================================')
if printFalse() or printFalse():
    print("Python or组合内容判断为True后执行")
print('====================================')

输出结果

or左侧判定为False后,才会执行or右侧的内容
====================================
False函数执行
True函数执行
Python or组合内容判断为True后执行
====================================
False函数执行
False函数执行
====================================