Python

Python 知识量:10 - 41 - 150

4.1 布尔逻辑><

真值表- 4.1.1 -

基本上,所有的编程语言都使用布尔逻辑来进行决策、区分“是非”,Python也是如此。

布尔逻辑就是操作真值。在Python中,“真”用True来表示,“假”用False来表示。此外,判断真假时需要用到几个逻辑运算符,例如:==、!=、and、or、not。以下是Python的真值表:

p
q p==q p!=q p and q
p or q not p
False False True False False False True
False True False True False True True
True False False True False True False
True True True False True True False

相等- 4.1.2 -

相等用逻辑运算符“==”来表示,仅当p和q都为True或都为False时,表达式p==q的结果才为True。

>>> True==True
True
>>> False==False
True
>>> True==False
False
>>> False==True
False

不相等- 4.1.3 -

不相等用逻辑运算符“!=”来表示,仅当p和q不同时,表达式p!=q的结果才为True。

>>> True!=True
False
>>> False!=False
False
>>> True!=False
True
>>> False!=True
True

- 4.1.4 -

逻辑与用关键字and表示,仅当p和q都为True时,表达式p and q的结果才为True。

>>> True and True
True
>>> False and False
False
>>> True and False
False
>>> False and True
False

- 4.1.5 -

逻辑或用关键字or来表示,仅当p和q至少有一个为True时,表达式p or q的结果才为True。

>>> True or True
True
>>> False or False
False
>>> True or False
True
>>> False or True
True

- 4.1.6 -

逻辑非用关键字not来表示,表达式not p与p的真值总是不同的。

>>> not True
False
>>> not False
True

优先级- 4.1.7 -

在计算较长(包含2个及以上逻辑运算符)的布尔表达式时需要知道运算符的优先级,来确定先计算哪一部分。Python布尔运算的优先级由高到低依次为:

  1. p==q

  2. p!=q

  3. not q

  4. p and q

  5. p or q

对于表达式not True and False or True来说:

  • 首先计算not True,结果为False,表达式变为 False and False or True。

  • 再计算False and False,结果为False,表达式变为 False or True。

  • 最后计算False or True,结果为True。

>>> not True and False or True
True

圆括号- 4.1.8 -

在逻辑运算中,如果表达式含有圆括号,应当总是先计算圆括号内表达式的值。如果存在多个圆括号嵌套的情况,应当首先计算最内层圆括号所包含的表达式。

对于表达式not (True and (False or True))来说:

  • 首先计算最内层圆括号中False or True的值,结果为True,表达式变为 not(True and True)。

  • 再计算外层圆括号中True and True的值,结果为True,表达式变为 not(True)。

  • 最后计算not(True),结果为False。

>>> not (True and (False or True))
False

短路求值- 4.1.9 -

在进行布尔逻辑运算时,Python与其他主流编程语言一样,也采用短路求值,这样可以提高计算的速度。

例如:对于False and X来说,不论X是True还是False,整个表达式的计算结果总是False;而对于True or X来说,不论X是True还是Flase,整个表达式的计算结果总是True。对于以上情况,Python不会计算X部分,而是直接给出结果,这就可以提高计算效率。