不同于物理学中“短路”的危险。Python中的短路机制非常有用。它类似于许多其他编程语言中的短路机制。一句话,就是在从左到右顺序执行一个条件判断表达式的过程中,预先判断表达式的True/False结果,从而终止右边剩余的操作。让我们通过几个简单的例子来总结一下Python中可用的几种短路机制:整个判断表达式ItisTrue。比如下面的例子,1/0本来会触发ZeroDivisionError:divisionbyzero错误,但是因为or左边的部分已经被逻辑判断为True,Python的短路机制会停止后续执行,直接返回or左边的结果:当or左边部分判断为False时,会返回右边部分的结果:XandY类似于XorY的机制,X和Y会终止orX的逻辑判断为False时提前进行后续操作,只返回X部分的结果:any()Python中的any()函数用于以序列的形式接受多个等待逻辑判断的部分,以及当序列中至少有一部分被判断为True时返回True。而any()只要按顺序遇到第一个为True的逻辑判断结果,也会触发短路,如下例,只需要3秒就可以完成判断过程,因为短路是在循环到达1:all()Python中的all()函数类似于any()。当传入的序列中每部分逻辑判断为True时都会返回True,遇到第一个False时也会终止后续操作:"ComparisonOperators"Python中用于数值比较的每个运算符也有一个简称-电路机制。从左到右,判断结果为False的部分一旦被执行,就会终止运行:【实际使用示例】当我们的代码涉及到条件判断,并且参与条件判断的值有一定的“计算成本”时,可以灵活运用短路机制,提高运行效率。比如我们需要根据用户id信息查询多个接口的权限,并标记为“超级权限”,就可以使用短路机制。这里我们随机写了几个有时间成本的函数作为接口表示:defapi1(id_):time.sleep(1)returnid_in['admin1','admin2']defapi2(id_):time.sleep(1))在['admin1','admin2','su1','su2']??中返回id_defapi3(id_):time.sleep(1)返回不在['ban1','ban2','ban3']中的id_当用户第一次不满足条件时,使用短路机制终止后续判断。写法简洁:
