すのはら荘春原庄的雪

《深入理解计算机系统》之俺搞来的别人讲解的逻辑短路(汗)【仅为我个人寻找方便,绝无抄袭之意,原网址:https://www.cnblogs.com/an9wer/p/5475551.html】

Toretto·2022-10-12 20:00·45 次阅读

《深入理解计算机系统》之俺搞来的别人讲解的逻辑短路(汗)【仅为我个人寻找方便,绝无抄袭之意,原网址:https://www.cnblogs.com/an9wer/p/5475551.html】

三元运算操作符 bool ? a : b ,若 bool 为真则 a ,否则为 b 。

  转化为 python 语言为:

        **bool and a or b **

  如何理解呢? 首先 a , b 都为真,这是默认的。如果 bool 为真, 则 bool and a 为真,输出 a ,短路 b 。如果 bool 为假,短路 a,直接 bool or b ,输出 b 。

  换一种更简单的写法:

        return a if bool else b

 

 

三元运算操作符 bool ? a : b ,若 bool 为真则 a ,否则为 b 。

  转化为 python 语言为:

        **bool and a or b **

  如何理解呢? 首先 a , b 都为真,这是默认的。如果 bool 为真, 则 bool and a 为真,输出 a ,短路 b 。如果 bool 为假,短路 a,直接 bool or b ,输出 b 。

  换一种更简单的写法:

        return a if bool else b

 

 

 

example :
1> def a():
2> print 'A'
3> return []
4> def b():
5> print 'B'
6> return []
7> def c():
8> print 'C'
9> return 1
10> def d():
11> print 'D'
12> return []
13> def e():
14> print 'E'
15> return 1
16> def f():
17> print 'F'
18> return 1
19> def g():
20> print 'G'
21> return []
22> def h():
23> print 'H'
24> return 1
25>
26> if a() and b() and c() and d() or e() and f() or g() and h():
27> print 'ok'

————————————————————
有问题吧????

别以为语句很长就很难,我们好好分析一下,从左至右,首先a() 的逻辑值为 False,其后到 or 语句为止有三个 and 语句: a() and b() and c() and d(),均被短路。只输出 a(), 得到 a() or e() 为True,输出 e() ,得 e() and F() 为 True ,输出 f(), 其后接 or 语句,则短路其后所有。最终只打印了A E F ok 。(结合我总结的短路逻辑的三点好好理解,应该没问题。)
——————————————————————

上述分析错误。

if a() and b() and c() and d() or e() and f() or g() and h():

这个条件 你可以看成:
a() and b() and c() and d() ----> false ,打印A

or e() and f() ------> true,打印E 和 F,

or g() and h() ------> skip,短路

所以综上所述,AEFok。

三者优先级: not > and > or

 
posted @   ——汐——  阅读(45)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示