脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - 如何在Python中用好短路机制

如何在Python中用好短路机制

2022-10-07 13:57费弗里 Python

这篇文章主要介绍了如何在Python中用好短路机制,Python中的短路机制非常有用,跟很多其他编程语言中的短路机制作用类似,接下来让我们通过几个简单的例子总结Python中可用的几种短路机制,需要的朋友可以参考下

不同于物理学中的「短路」(Short circuit)那般危险,Python中的短路机制非常有用,跟很多其他编程语言中的短路机制作用类似,一句话概括就是一段条件判断表达式在从左到右按顺序执行的过程中,提前确定了表达式的True/False结果,从而终止右边剩余的运算。

如何在Python中用好短路机制

让我们通过几个简单的例子总结Python中可用的几种短路机制:

 

1.X or Y

X or Y是最常用的短路机制,我们都知道只要X或Y中至少有一个为True时,整段判断表达式就为True,譬如下面的例子中,本来1 / 0会触发ZeroDivisionError: division by zero错误,但因为or左边的部分已经逻辑判断为True,Python的短路机制就会停止后续的执行,直接返回or左边的结果:

如何在Python中用好短路机制

而当or左边部分逻辑判断为False时,则会返回右边部分的结果:

如何在Python中用好短路机制

 

2.X and Y

类似X or Y的机制,X and Y会在X逻辑判断为False时提前终止后续的运算,只返回X部分的结果:

如何在Python中用好短路机制

 

3.any()

Python中的any()函数用于接受序列形式的多个等待逻辑判断的部分,并在序列中至少有一个部分逻辑判断为True时返回True。

而只要any()按顺序遇到第一个逻辑判断为True的结果,也会触发短路,正如下面的例子中只花费3秒就完成了判断过程,因为循环到1时触发了短路:

如何在Python中用好短路机制

 

4.all()

Python中的all()函数类似any(),会在传入序列中每个部分逻辑判断均为True时返回True,其也会在按顺序遇到第一个False时终止后续运算:

如何在Python中用好短路机制

 

4.1「比较运算符」

Python中用于数值大小比较的各个运算符也具有短路机制,从左到右,一旦执行到判断结果为False的部分都会终止运算:

如何在Python中用好短路机制

 

4.2「实际使用示例」

当我们的代码中涉及到条件判断,且参与条件判断的值具有一定的「运算成本」时,就可以灵活运用短路机制来提升运行效率,譬如我们需要根据用户id信息向多个接口查询其权限,全部满足时将其标记为“超级权限”,就可以利用到短路机制。

这里我们随意写几个具有时间成本的函数作为接口示意:

def api1(id_):
    
    time.sleep(1)
    
    return id_ in ["admin1", "admin2"]

def api2(id_):
    
    time.sleep(1)
    
    return id_ in ["admin1", "admin2", "su1", "su2"]

def api3(id_):
    
    time.sleep(1)
    
    return id_ not in ["ban1", "ban2", "ban3"]

利用短路机制在用户第一次没有满足条件时就终止后续判断,写法简洁:

如何在Python中用好短路机制

到此这篇关于如何在Python中用好短路机制的文章就介绍到这了,更多相关Python中妙用短路机制内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://developer.51cto.com/article/701845.html

延伸 · 阅读

精彩推荐
  • Pythonpython模拟实现斗地主发牌

    python模拟实现斗地主发牌

    这篇文章主要为大家详细介绍了python代码模拟实现斗地主发牌,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 ...

    金鞍少年12702020-05-06
  • PythonPython基于Opencv来快速实现人脸识别过程详解(完整版)

    Python基于Opencv来快速实现人脸识别过程详解(完整版)

    这篇文章主要介绍了Python基于Opencv来快速实现人脸识别过程详解(完整版)随着人工智能的日益火热,计算机视觉领域发展迅速,今天就为大家带来最基础...

    千锋Python唐唐君6462021-08-07
  • PythonWindows下Anaconda2安装NLTK教程

    Windows下Anaconda2安装NLTK教程

    这篇文章主要为大家详细介绍了Windows下Anaconda2安装NLTK的教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    Nicholem5292021-04-03
  • Python使用python实现简单五子棋游戏

    使用python实现简单五子棋游戏

    这篇文章主要为大家详细介绍了使用python实现简单五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    weixin_428749335152021-07-14
  • PythonPython3中最常用的5种线程锁实例总结

    Python3中最常用的5种线程锁实例总结

    python3线程中锁机制还是很重要的知识点,如果大家不清楚锁机制的话,那就一定要好好看下这篇文章,这篇文章主要给大家总结介绍了光宇Python3中最常用的5种...

    云崖君6072021-12-11
  • Python如何获取numpy array前N个最大值

    如何获取numpy array前N个最大值

    这篇文章主要介绍了获取numpy array前N个最大值的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...

    upDiff9662021-11-02
  • Pythonpython内置函数:lambda、map、filter简单介绍

    python内置函数:lambda、map、filter简单介绍

    Python 内置了一些比较特殊且实用的函数,使用这些能使你的代码简洁而易读。下面对python内置函数:lambda、map、filter简单介绍下,需要的朋友参考下吧...

    linzuxin3592020-12-18
  • Python浅析pandas随机排列与随机抽样

    浅析pandas随机排列与随机抽样

    这篇文章主要介绍了pandas随机排列与随机抽样的相关资料,帮助大家更好的利用pandas进行数据分析,感兴趣的朋友可以了解下...

    元小疯8132021-08-28